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.
This is a discussion on Button within the Windows Programming forums, part of the Platform Specific Boards category; I have created a window a edit box and 1 push button. Is there anyway to make it so that ...
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.
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:
If this isn't what you needed I'm sorry. But I tried.Code:// With a member variable m_Button1.SendMessage(BM_CLICK);![]()
Website(s): http://www16.brinkster.com/trifaze/
E-mail: trifaze_mattu@lycos.com
---------------------------------
C++ Environment: MSVC++ 6.0; Dev-C++ 4.0/4.1
DirectX Version: 9.0b
DX SDK: DirectX 8.1 SDK
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; }
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:
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: trifaze_mattu@lycos.com
---------------------------------
C++ Environment: MSVC++ 6.0; Dev-C++ 4.0/4.1
DirectX Version: 9.0b
DX SDK: DirectX 8.1 SDK
Yup, it works, thanks for the help guys.