Thread: Button

  1. #1
    Registered User
    Join Date
    Feb 2004
    Posts
    42

    Button

    I have created a window a edit box and 1 push button.
    Is there anyway to make it so that when the user is typing in text in the edit box and pushes enter, the push button is pressed?
    I'm using MFC.

  2. #2
    Programming is fun, mkay?
    Join Date
    Oct 2001
    Posts
    490

    Lightbulb It depends on the kind of window ...

    Hey there. I hope my information can help you out.

    First, I would like to say hello to everyone again. It's been quite a long time since I've posted on these forums, although I visit the site itself quite often.

    Anyhow, it depends on what kind of window you are using. I can tell you how if you are using a dialog window.

    All you have to do is handle the dialog class's "OkOK()" function in its .cpp source file.

    All you do is comment out the line that says (or is similar to) "return CDialog::OnOK();" first. Then, above that line you add this:

    Code:
    // With a member variable
    m_Button1.SendMessage(BM_CLICK);
    If this isn't what you needed I'm sorry. But I tried.
    Website(s): http://www16.brinkster.com/trifaze/

    E-mail: [email protected]

    ---------------------------------
    C++ Environment: MSVC++ 6.0; Dev-C++ 4.0/4.1
    DirectX Version: 9.0b
    DX SDK: DirectX 8.1 SDK

  3. #3
    Registered User
    Join Date
    Feb 2004
    Posts
    42
    Yup, i'm creating a dialog window, but i can't find the "return CDialog::OnOK();" line.

    Here's my code:

    Code:
    // test4Dlg.cpp : implementation file
    //
    
    #include "stdafx.h"
    #include "test4.h"
    #include "test4Dlg.h"
    #include <c:\WinNTL-5_3_1\include\NTL/ZZ.h>
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    ZZ chartoZZ ( CString strinput );
    void ZZtochar ( ZZ a, char num[] );
    
    /////////////////////////////////////////////////////////////////////////////
    // CAboutDlg dialog used for App About
    
    class CAboutDlg : public CDialog
    {
    public:
    	CAboutDlg();
    
    // Dialog Data
    	//{{AFX_DATA(CAboutDlg)
    	enum { IDD = IDD_ABOUTBOX };
    	//}}AFX_DATA
    
    	// ClassWizard generated virtual function overrides
    	//{{AFX_VIRTUAL(CAboutDlg)
    	protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    	//}}AFX_VIRTUAL
    
    // Implementation
    protected:
    	//{{AFX_MSG(CAboutDlg)
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    };
    
    CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    {
    	//{{AFX_DATA_INIT(CAboutDlg)
    	//}}AFX_DATA_INIT
    }
    
    void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	//{{AFX_DATA_MAP(CAboutDlg)
    	//}}AFX_DATA_MAP
    }
    
    BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    	//{{AFX_MSG_MAP(CAboutDlg)
    		// No message handlers
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // CTest4Dlg dialog
    
    CTest4Dlg::CTest4Dlg(CWnd* pParent /*=NULL*/)
    	: CDialog(CTest4Dlg::IDD, pParent)
    {
    	//{{AFX_DATA_INIT(CTest4Dlg)
    	m_num = _T("0");
    	m_char = _T("");
    	m_inttest = 0;
    	//}}AFX_DATA_INIT
    	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }
    
    void CTest4Dlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	//{{AFX_DATA_MAP(CTest4Dlg)
    	DDX_Text(pDX, IDC_num, m_num);
    	DDX_Text(pDX, IDC_char, m_char);
    	DDX_Text(pDX, IDC_inttest, m_inttest);
    	//}}AFX_DATA_MAP
    }
    
    BEGIN_MESSAGE_MAP(CTest4Dlg, CDialog)
    	//{{AFX_MSG_MAP(CTest4Dlg)
    	ON_WM_SYSCOMMAND()
    	ON_WM_PAINT()
    	ON_WM_QUERYDRAGICON()
    	ON_BN_CLICKED(IDC_cal, Oncal)
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // CTest4Dlg message handlers
    
    BOOL CTest4Dlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    
    	// Add "About..." menu item to system menu.
    
    	// IDM_ABOUTBOX must be in the system command range.
    	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    	ASSERT(IDM_ABOUTBOX < 0xF000);
    
    	CMenu* pSysMenu = GetSystemMenu(FALSE);
    	if (pSysMenu != NULL)
    	{
    		CString strAboutMenu;
    		strAboutMenu.LoadString(IDS_ABOUTBOX);
    		if (!strAboutMenu.IsEmpty())
    		{
    			pSysMenu->AppendMenu(MF_SEPARATOR);
    			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    		}
    	}
    
    	// Set the icon for this dialog.  The framework does this automatically
    	//  when the application's main window is not a dialog
    	SetIcon(m_hIcon, TRUE);			// Set big icon
    	SetIcon(m_hIcon, FALSE);		// Set small icon
    	
    	// TODO: Add extra initialization here
    	
    	return TRUE;  // return TRUE  unless you set the focus to a control
    }
    
    void CTest4Dlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    	{
    		CAboutDlg dlgAbout;
    		dlgAbout.DoModal();
    	}
    	else
    	{
    		CDialog::OnSysCommand(nID, lParam);
    	}
    }
    
    // If you add a minimize button to your dialog, you will need the code below
    //  to draw the icon.  For MFC applications using the document/view model,
    //  this is automatically done for you by the framework.
    
    void CTest4Dlg::OnPaint() 
    {
    	if (IsIconic())
    	{
    		CPaintDC dc(this); // device context for painting
    
    
    		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
    
    		// Center icon in client rectangle
    		int cxIcon = GetSystemMetrics(SM_CXICON);
    		int cyIcon = GetSystemMetrics(SM_CYICON);
    		CRect rect;
    		GetClientRect(&rect);
    		int x = (rect.Width() - cxIcon + 1) / 2;
    		int y = (rect.Height() - cyIcon + 1) / 2;
    
    		// Draw the icon
    		dc.DrawIcon(x, y, m_hIcon);
    	}
    	else
    	{
    		CDialog::OnPaint();
    	}
    }
    
    // The system calls this to obtain the cursor to display while the user drags
    //  the minimized window.
    HCURSOR CTest4Dlg::OnQueryDragIcon()
    {
    	return (HCURSOR) m_hIcon;
    }
    
    	
    
    void CTest4Dlg::Oncal() 
    {
    	// TODO: Add your control notification handler code here
    
    
    	ZZ inputzz;
    	char zzinchar[BUFSIZ];
    	char *nu;
    
    	
    	UpdateData(TRUE);
    
    	// CString to ZZ
    	inputzz = chartoZZ ( m_num ); // take in CString for conversion ZZ
    
    	
    
    
    	m_inttest = to_int ( inputzz ); // testing for smal numbers
    
    
    
    	// ZZ to CString
    	ZZtochar ( inputzz, zzinchar ); 
    
    	nu = zzinchar; 
    
    	//m_char = nu;
    
    	m_char += nu; 
    
    	m_char += "\r\n";
    
    
    
    	UpdateData(FALSE);
    
    
    }
    
    
    ZZ chartoZZ ( CString strinput )
    {
    
    
    	ZZ final, finaltemp, base;
    	int digit, places;
    	long i;
    	char num[BUFSIZ];
    	//char *nu;
    
    
    	LPCTSTR nu = strinput; // a pointer to strinput CString
    	//nu = p;
    
    
    	strcpy ( num, nu ); // convert pointer nu to num[]
    
    	/*
    	cout << "\nEnter a number in char: ";
    
    	cin.getline ( num, sizeof num );
    	*/
    	
    	digit = 0;
    
    	while ( num[digit] != NULL )
    	{
    
    		digit++;
    
    	}
    
    	//cout << digit;
    
    	base = 10;
    	i = 0;
    
    	while ( digit != 0 )
    	{
    
    		places = num[digit - 1] - 48; // start from right most digit, number of each places
    
    		//cout << "\nplaces: " << places;
    
    		finaltemp = places * power ( base, i );
    
    		final = final + finaltemp;
    
    		i++;
    		digit--;
    
    	}
    
    	//cout << "\nnumber in ZZ final: " << final;
    	
    	return ( final );
    
    }
    
    
    
    
    
    void ZZtochar ( ZZ a, char num[] )
    {
    
    	
    	//ZZ a;
    	ZZ tempa;
    	int i, b, count, digit;
    	//char num[BUFSIZ];
    	char *nu;
    
    	/*
    	cout << "\nEnter a number in ZZ: ";
    
    	cin >> a;
    	*/
    
    	tempa = a;
    
    	
    	digit = 0;
    
    	while ( tempa != 0 )
    	{
    
    		digit++;
    
    		tempa = tempa / 10;
    
    	}
    
    	
    	//cout << "\ndigit: " << digit << "\n";
    
    
    	i = digit - 1;
    
    	num[digit] = NULL;
    
    	while ( a != 0 )
    	{
    
    		b = a % 10; // find last digit
    
    		b = b + 48; // add 48 to convert to ASCII character for storing in char format
    					// ZZ = 0, then char = '0' or = 48
    
    		count = 48; // start from ASCII character '0'
    
    		while ( ( count != 58 ) ) // till 57 = '9', use 58 because count++ before exit
    		{
    
    			if ( b == count )
    			{
    
    				num[i] = count;
    
    				
    			}
    
    			count ++;
    
    		}
    
    		
    		
    		a = a / 10; // move to next digit
    
    		i--;
    
    	}
    
    	nu = num;
    
    	//cout << "\nnumber in char nu is: " << nu << "\n";
    
    
    	return;
    }

  4. #4
    Registered User Codeplug's Avatar
    Join Date
    Mar 2003
    Posts
    4,981
    If the edit box isn't a multi-line edit box, just make the button the "defaut" button of the dialog.
    It looks like this:

  5. #5
    Programming is fun, mkay?
    Join Date
    Oct 2001
    Posts
    490
    Okay. You may want to try using the class wizard (CTRL+W) to add the "OnOK" function. If that doesn't work you can try Codeplug's suggestion.
    Website(s): http://www16.brinkster.com/trifaze/

    E-mail: [email protected]

    ---------------------------------
    C++ Environment: MSVC++ 6.0; Dev-C++ 4.0/4.1
    DirectX Version: 9.0b
    DX SDK: DirectX 8.1 SDK

  6. #6
    Registered User
    Join Date
    Feb 2004
    Posts
    42
    Yup, it works, thanks for the help guys.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 2
    Last Post: 06-28-2008, 08:30 PM
  2. elliptical button
    By geek@02 in forum Windows Programming
    Replies: 0
    Last Post: 11-21-2006, 02:15 AM
  3. Remove dialog button border
    By RedZone in forum Windows Programming
    Replies: 4
    Last Post: 08-21-2006, 01:20 PM
  4. writing text over a deleted button
    By algi in forum Windows Programming
    Replies: 4
    Last Post: 05-02-2005, 11:32 AM
  5. Window won't display on button command!?
    By psychopath in forum Windows Programming
    Replies: 6
    Last Post: 06-22-2004, 08:12 PM