PreTranslateMessage 的问题,急急急!

summer0360 2005-08-19 05:21:33
自己写的一个控件,添加到一个dialog(此dialog风格为child)中,动态创建此控件。
相用PreTranslateMessage方法来截获dialog以及控件的按键消息(
if pMsg->message==WM_KEYDOWN ...),可是调试发现没有执行!跟踪发现,只截获到message为"15"这个消息!
如果把不动态创建自写的控件,dialog可以响应PreTranslateMessage,如果动态创建自写的控件,把dialog风格改为Popup,也可以响应PreTranslateMessage!
所以估计是创建控件的参数和dialog的属性设置有冲突(而且自写控件是继承CWnd的,也不响应PreTranslateMessage!)。
请问哪位高手了解PreTranslateMessage的消息机制,多加指点!
解决了,分再加!
...全文
130 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
summer0360 2005-08-20
tufaqing() 你是对的
是因为没有focus的原因
我原来急晕了,setfocus()加的位置不对,现在可以了。
多谢关注的朋友!
回复
jjiaming 2005-08-19
用SPY++查一下消息到底发送给哪个窗口
回复
dirdirdir3 2005-08-19
child的不少消息都是在parent对话框里面处理的。
回复
summer0360 2005-08-19
to tufaqing()
3x first !
不是焦点的原因啊,setfocus试过了。
主要问题是dialog的popup风格和child风格在消息传递上到底有什么区别。
我原来的dialog都可以截获WM_KEYDOWN消息,可是一动态创建自写控件以后就截获不了了,连自写控件的PreTranslateMessage 都不能截获WM_KEYDOWN。可如果把dialog的风格改为popup就又可以了!
回复
tufaqing 2005-08-19
可能是对话框失去焦点了,在对话框适当的位置加上SetFocus(),或在控件适当位置加上GetParent()->SetFocus,注意,对话框是不能响应子控件的KEYDOWN消息的。
回复
summer0360 2005-08-19
自写控件的创建函数我是这样写的:
m_myTree.Create(NULL,NULL,WS_CHILD|WS_VISIBLE|SS_NOTIFY|WS_TABSTOP,CRect(0,0,0,0),this,IDC_TREE1);
回复
相关推荐
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-08-19 05:21
社区公告
暂无公告