对话框控件焦点切换消息问题

xiaolizi 2012-01-17 03:14:07
需要是这样:
有一个对话框,上面有3个控件,比如都是edit1,edit2,edit3,我希望当激活其中某个edit的时候(如有输入光标,通过Tab键切换或者直接鼠标点击后获得焦点),可以获得消息来做某些提示信息显示,找了半天都没有发现有类似这样的windows消息,哪位高手知道如何解决这个问题?在此感谢!
...全文
185 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dahaiI0 2012-01-17
  • 打赏
  • 举报
回复
。。。嘿嘿,ON_CONTROL_RANGE 我没这样用过不知道能不能实现这个需求。子类化肯定是可以的
dahaiI0 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xiaolizi 的回复:]
已经找到 ON_CONTROL_RANGE 谢谢!,结贴
[/Quote]
貌似没有,如果有几十个这样的EDIT,子类化,在派生类中响应WM_SETFOCUS(理论上是这个)
xiaolizi 2012-01-17
  • 打赏
  • 举报
回复
已经找到 ON_CONTROL_RANGE 谢谢!,结贴
xiaolizi 2012-01-17
  • 打赏
  • 举报
回复
To dahaiI0,
谢谢,这个方法是可行的,能够达到需求,不过有个小小的遗憾,就是如果我控件很多,几十个,这样的消息函数要添加这么多个,代码的维护以及整洁性等都不够友好,有没有类似ON_EN_SETFOCUS_RANGE这样的消息宏可用? 呵呵
dahaiI0 2012-01-17
  • 打赏
  • 举报
回复
在资源面板,邮件EDIT-》添加事件处理程序-》ON_EN_SETFOCUS
如果是动态生成的EDIT,就手动添加,其实用向导添加和手动添加一样的,只不过向导添加会避免出细节错误
1:对话框头文件 afx_msg void OnEnSetfocusEdit1();
2:CPP文件
void CTestDlg::OnEnSetfocusEdit1()
{
// TODO: 在此添加控件通知处理程序代码
}
3 ON_EN_SETFOCUS(IDC_EDIT1, &CTestDlg::OnEnSetfocusEdit1),这句添加在beginmessagemap和endmessagemap中间
xiaolizi 2012-01-17
  • 打赏
  • 举报
回复
WM_KILLFOCUS WM_SETFOCUS 无法满足需求,因为需要获得消息的不是控件本身而是上层的对话框

ON_EN_SETFOCUS 似乎可行,具体怎么做呢
dahaiI0 2012-01-17
  • 打赏
  • 举报
回复
或者在主对话框里响应编辑框ON_EN_SETFOCUS事件
dahaiI0 2012-01-17
  • 打赏
  • 举报
回复
有一个方法,至少能实现要求,不过比较笨
PreTranslateMessage捕获按键消息,按下了TAB,并且下一个得到焦点的是编辑框就提示,再捕获WM_LBUTTONDOWN,点在编辑框内就提示
Saleayas 2012-01-17
  • 打赏
  • 举报
回复
WM_SETFOCUS ??
oyljerry 2012-01-17
  • 打赏
  • 举报
回复
WM_KILLFOCUS

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧