用mfc的基于dialog的对话框编程。里面有若干个editbox。
想在想每当在上一个editbox内输入回车,光标自动跳转到下一个editbox内。另外一些editbox回车之后,应当执行对应的按钮单击事件函数
谢谢
BOOL CXxxDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
if(pMsg->wParam==VK_RETURN)
pMsg->wParam=VK_TAB;
}
return CDialog::PreTranslateMessage(pMsg);
}
其实这个问题的解法很多,
你也可以在if(pMsg->wParam==VK_RETURN)
后紧接着是GetDlgItem(IDC_NEXTEDIT)->SetFocus();
将焦点切换到下一个,当然这就解决了你的难题了,
因为它不用考虑文本框的顺序,只要它的ID就行了.
如果你要想执行按钮里的程序,
比如你的按钮程序为void CXXdlg::OnYourButton(){},
你只需要在要执行的地方加入OnYourButton();就行了
楼主:“当前按回车的”是对话框,不是编辑框。只有对话框才能响应 WM_KEYDOWN 消息。
你只要判断当回车键按下时,哪个 EditBox 拥有焦点就可以了。
this->GetFocus()->GetDlgCtrlID() 即返回当前拥有焦点的控件的 ID 。