关于设置复杂对话框tab order(按tab键使控件焦点转移)的问题

yuanchao111 2005-06-28 11:10:07
我的一个对话框上面有很多控件,包括一个CTabCtrl的控件,这个CTabCtrl控件有三个标签项,可以切换三个放于其客户区域的子对话框(通过隐藏显示的方式切换,三个子对话框上还有控件),现在的问题是:我不能用Ctrl+D设置tab order的方法把控件焦点来转到CTabCtrl控件客户区的对话框中。
我起初Override了PreTranslateMesage()函数,试图截获按下Tab键的消息,用SetFocus()设置焦点,但是发现部分Tab消息可以截获,但是还有一部分Tab消息是被处理后才截获到,也就是控件焦点已经按照最初Ctrl+D设置的顺序处理过了。
请问为什么发生这样的事情?难道在PreTranslateMessage()里面不是可以事先截获并处理消息吗?
请问哪位大哥碰到过同样的问题,帮忙解决一下。
我已经认真组织语言了,如果我没有把问题表述清楚,请大家提出,

Thanks in advance.
...全文
233 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeKey 2005-06-28
  • 打赏
  • 举报
回复
动态 tab order顺序

m_1.SetWindowPos( NULL, 0,0,0,0, SWP_NOSIZE | SWP_NOMOVE |SWP_SHOWWINDOW ); //1
m_2.SetWindowPos( NULL, 0,0,0,0, SWP_NOSIZE | SWP_NOMOVE |SWP_SHOWWINDOW ); //2
m_3.SetWindowPos( NULL, 0,0,0,0, SWP_NOSIZE | SWP_NOMOVE |SWP_SHOWWINDOW ); //3

.........



goodboyws 2005-06-28
  • 打赏
  • 举报
回复
另外用SetWindowPos改变不听话的控件的Z-order也有效
goodboyws 2005-06-28
  • 打赏
  • 举报
回复
我遇到过类似问题,重载对话框的PreTranslateMesage应该可以
ChenJF206 2005-06-28
  • 打赏
  • 举报
回复
可能和消息传递的层次有关,比如:
msg----〉子窗口----〉父窗口
|
PreTranslateMessage
则消息已被处理过。

不知道是不是这样,等高手...
yuanchao111 2005-06-28
  • 打赏
  • 举报
回复
原来大家都没有碰到过类似的问题啊。

15,979

社区成员

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

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