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的消息机制,多加指点!
解决了,分再加!
...全文
174 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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);

15,979

社区成员

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

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