关于SendMessage的问题,请赐教!

dimple0513 2009-02-25 09:24:54
我现在想实现一个功能,当子窗口关闭时给父窗口传递参数信息,于是,我决定采用发送消息。
在子窗口中,我写了
GetParent()->SendMessage(WM_DBCLICK_EXPLOIT,0,lClientID);
EndDialog(20);
其中lClientID是我要传递给父窗口的参数;
在父窗口所在类中我声明了WM_DBCLICK_EXPLOIT消息,在头文件中声明了afx_msg LRESULT FillExploit(WPARAM wParam,LPARAM lParam);
在CPP文件中,我进行了消息映射,ON_MESSAGE(WM_DBCLICK_EXPLOIT,FillExploit)
也写了实现函数,
LRESULT CInfoBuildingDlg::FillExploit(WPARAM wParam,LPARAM lParam)
{
if ( lParam!=-1 )
{
LoadExploit(lParam);
UpdateData(FALSE);
}
return 0;
}

现在的问题在于我在子窗口发送消息后GetParent()->SendMessage(WM_DBCLICK_EXPLOIT,0,lClientID);程序并不进入父窗口的LRESULT CInfoBuildingDlg::FillExploit(WPARAM wParam,LPARAM lParam)函数,请问这是什么原因?请指教!
...全文
120 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dimple0513 2009-02-25
  • 打赏
  • 举报
回复
你讲的太对了,就是这里的问题,谢谢你啊!我的失误~
dimple0513 2009-02-25
  • 打赏
  • 举报
回复
不可以,不过我找到办法了,我在子窗口加了一个成员变量保存了父窗口的指针,不用getparent()了,现在搞定了,谢谢你哈!
schlafenhamster 2009-02-25
  • 打赏
  • 举报
回复
WM_USER+xxx 都可以.
通过AfxGetMainWnd()试试.
ltc_mouse 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dimple0513 的回复:]
是,在定义子窗口时已经传递了父窗口的指针,CQueryExploitDlg dlg(GetParent());这是子窗口;
[/Quote]
这个子窗口是在哪里创建的呢? 用GetParent()而不是this,是在另一个子窗口吗?
dimple0513 2009-02-25
  • 打赏
  • 举报
回复
还有一个问题不明白,为什么要定义#define WM_DBCLICK_EXPLOIT WM_USER+100 ,我刚开始定义是#define WM_DBCLICK_EXPLOIT WM_USER+119,调试显示内存溢出,我改成了 #define WM_DBCLICK_EXPLOIT WM_USER+1;刚才我又改为#define WM_DBCLICK_EXPLOIT WM_USER+100;还是不可以,不进父窗口的消息处理函数...
dimple0513 2009-02-25
  • 打赏
  • 举报
回复
是,在定义子窗口时已经传递了父窗口的指针,CQueryExploitDlg dlg(GetParent());这是子窗口;
schlafenhamster 2009-02-25
  • 打赏
  • 举报
回复
#define WM_DBCLICK_EXPLOIT WM_USER+100 ?
GetParent()是不是真的Parent ?

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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