![]() |
MFC中,对话框中editbox框想实现输入回车自动跳转功能
楼主whmsd()2003-09-22 16:31:55 在 VC/MFC / 基础类 提问
用mfc的基于dialog的对话框编程。里面有若干个editbox。 想在想每当在上一个editbox内输入回车,光标自动跳转到下一个editbox内。另外一些editbox回车之后,应当执行对应的按钮单击事件函数 谢谢 问题点数:20、回复次数:9Top 1 楼wudhu(亮亮)回复于 2003-09-22 19:04:40 得分 9 BOOL CXxxDlg::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_KEYDOWN) { if(pMsg->wParam==VK_RETURN) pMsg->wParam=VK_TAB; } return CDialog::PreTranslateMessage(pMsg); } 4 楼whmsd()回复于 2003-09-23 10:00:45 得分 0 up 非常感谢。另外,还有一个问题。比如我想在最后一个editbox里面回车的时候执行一个按钮的操作。而这个按钮和这个editbox又不是紧挨着的。tab order不连续。请问,在不影响前面的功能的情况下,如何处理。 谢谢 其实这个问题的解法很多, 你也可以在if(pMsg->wParam==VK_RETURN) 后紧接着是GetDlgItem(IDC_NEXTEDIT)->SetFocus(); 将焦点切换到下一个,当然这就解决了你的难题了, 因为它不用考虑文本框的顺序,只要它的ID就行了. 如果你要想执行按钮里的程序, 比如你的按钮程序为void CXXdlg::OnYourButton(){}, 你只需要在要执行的地方加入OnYourButton();就行了 8 楼whmsd()回复于 2003-09-23 15:47:01 得分 0 up 我如何才能知道当前按回车的editbox是哪一个?Top 9 楼WindsonZhL(风之子)回复于 2003-09-23 16:26:48 得分 9 楼主:“当前按回车的”是对话框,不是编辑框。只有对话框才能响应 WM_KEYDOWN 消息。 你只要判断当回车键按下时,哪个 EditBox 拥有焦点就可以了。 this->GetFocus()->GetDlgCtrlID() 即返回当前拥有焦点的控件的 ID 。 |
回复: MFC中,对话框中editbox框想实现输入回车自动跳转功能
BOOL CDialog::PreTranslateMessage(MSG* pMsg)
{ if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST) { if (pMsg->wParam == VK_RETURN) { if (GetFocus()== ::GetDlgItem(IDC_EDIT_TALKTEXT)) { 你的操作或处理; } return CDialog::PreTranslateMessage(pMsg); } } } |
所有的时间均为北京时间。 现在的时间是 10:57 PM. |