几何尺寸与公差论坛

 找回密码
 注册
查看: 1137|回复: 1

MFC中,对话框中editbox框想实现输入回车自动跳转功能

[复制链接]
发表于 2009-11-10 15:45:04 | 显示全部楼层 |阅读模式
楼主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:reTranslateMessage(MSG*   pMsg)     
  {   
  if(pMsg->message   ==   WM_KEYDOWN)   
  {   
  if(pMsg->wParam==VK_RETURN)   
  pMsg->wParam=VK_TAB;   
  }   
  return   CDialog:reTranslateMessage(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   。
 楼主| 发表于 2009-11-10 15:46:02 | 显示全部楼层

回复: MFC中,对话框中editbox框想实现输入回车自动跳转功能

BOOL   CDialog:reTranslateMessage(MSG*   pMsg)     
  {   
        if   (WM_KEYFIRST   <=   pMsg->message   &&   pMsg->message   <=   WM_KEYLAST)     
        {   
                if   (pMsg->wParam   ==   VK_RETURN)   
                {   
    if   (GetFocus()==   ::GetDlgItem(IDC_EDIT_TALKTEXT))   
                      {   
            你的操作或处理;   
    }   
    return   CDialog:reTranslateMessage(pMsg);   
                }   
        }   
  }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-5-10 10:05 , Processed in 0.037434 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表