关于设置复杂对话框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.
...全文
188 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
原来大家都没有碰到过类似的问题啊。
回复
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-06-28 11:10
社区公告
暂无公告