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.
Printable View
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);
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.
Yup, it works, thanks for the help guys.