Thanks Joseph, I think this will help me a lot. I will try it out
today to see if I can get it to work.
Joseph M. Newcomer wrote:
Subclass the CEdit
class CEnterEdit : public CEdit {
... ClassWizard stuff
};
Now add an OnChar handler. You now have two choices at this point. If you can do all the
work in the edit control with no reference to values outside (such as in the parent
dialog), then you can just do
void CEnterEdit::OnChar(UINT nChar, ...)
{
if(nChar == _T('\r'))
{
somefunction();
return;
}
CEdit::OnChar(nChar, ...);
}
In your case, you probably want the work done in the parent, so you would do
if(nChar == _T('\r'))
{
GetParent()->SendMessage(UWM_ENTER_SEEN, (WPARAM)GetDlgCtrlId(), (LPARAM)m_hWnd);
return;
}
then in your handler, you would do
LRESULT CMyDialog::OnEnterSeen(WPARAM wParam, LPARAM)
{
switch(wParam)
{ /* wParam */
case IDC_NAME:
OnEnterName();
break;
case IDC_SSN:
OnEnterSSN();
break;
...
} /* wParam */
return 0;
}
or something much like this (in the above example, I don't use the HWND).
Note that to get the <enter> you have to make the control be a multiline control. But
because you are intercepting it, you don't get multiple lines.
Generally anything done in response to EN_KILLFOCUS is dangers, and leads to code that is
very difficult to get working right.
joe
On 14 Jun 2006 12:53:25 -0700, "Marek" <marek.krzeminski@gmail.com> wrote:
I have created a dialog based application that has three edit fields.
I want to be able to call a function when the user presses Enter in any
of the edit boxes. For instance, when user presses Enter in edit box
1, I want to call Function1(). When user presses Enter in edit box 2,
I want to call Function2().
How do I do this?
I can't use ON_EN_UPDATE because the function that I am calling takes a
long time to process. If I use OnUpdate then for every letter the user
types, my function will run.
I don't want to use ON_EN_KILLFOCUS because I want the user to see the
results of my function after they press Enter. I don't want them to
have to go an press another button or do something else to see the
results.
Can anyone help me?
Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm