CFormView的单文档再内嵌一个对话框向CFormView发消息,CFormView取不到消息

vansbluge 2010-05-20 12:00:36
基于CFormView的单文档工程,在上面再内嵌一个对话框A(CDialog),在对话框A中某个按钮的响应函数有如下的语句


GetParent()->SendMessage(WM_USER+11, WPARAM(15000), 0);


向父窗口也就是CFormView对象发送信息,但CFormView接收不到该信息,


BOOL CVJEncoderView::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (pMsg->message == WM_USER+11)
{
if (pMsg->wParam == 15000)
TRACE("Get it\n");
}

return CFormView::PreTranslateMessage(pMsg);
}


但我用spy++查看CFormView对象,发现有记录

<00021> 000804DA S message:0x040B [用户定义:WM_USER+11] wParam:00003A98 lParam:00000000
<00022> 000804DA R message:0x040B [用户定义:WM_USER+11] lResult:00000000

这到底为什么?
...全文
98 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-05-20
  • 打赏
  • 举报
回复
这样试试
::PostMessage(GetParent()->GetSafeHandle(), WM_USER+11, WPARAM(15000), 0);
向立天 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 vansbluge 的回复:]
父窗口:CFormView

我的对话框是child属性的,就像按钮一样直接嵌入到CFormView里
[/Quote]
CFormView应该是包含一个对话框然后才是你的子对话框吧
yangxuefeng09 2010-05-20
  • 打赏
  • 举报
回复
但我用spy++查看CFormView对象,发现有记录

<00021> 000804DA S message:0x040B [用户定义:WM_USER+11] wParam:00003A98 lParam:00000000
<00022> 000804DA R message:0x040B [用户定义:WM_USER+11] lResult:00000000

这到底为什么?
vansbluge 2010-05-20
  • 打赏
  • 举报
回复
是不是消息没有进入PreTranslateMessage里,直接进入到WindowProc里了? 回去我测试一下..
vansbluge 2010-05-20
  • 打赏
  • 举报
回复
父窗口:CFormView

我的对话框是child属性的,就像按钮一样直接嵌入到CFormView里
向立天 2010-05-20
  • 打赏
  • 举报
回复
你的对话框A的父窗口是谁?
vansbluge 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xianglitian 的回复:]

这样试试
C/C++ code
::PostMessage(GetParent()->GetSafeHandle(), WM_USER+11, WPARAM(15000), 0);
[/Quote]

试过了,不行

15,979

社区成员

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

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