HWND_BROADCAST 死活sendMessage不出

jintianfree 2009-07-02 09:49:52


BOOL COSDlg::OnInitDialog()
{
......

COSDlg::WM_USER_BROADCAST_COME=RegisterWindowMessage("COME");
COSDlg::WM_USER_BROADCAST_EXIT=RegisterWindowMessage("EXIT");

::SendMessage((HWND)HWND_BROADCAST,COSDlg::WM_USER_BROADCAST_COME,0,
(LPARAM)this->m_hWnd);

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}



启动一个程序 然后再启动一个 按说第二个启动的时候 要给第一个发个消息的WM_USER_BROADCAST_COME

可是死活接收不到
...全文
956 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿军 2011-06-30
  • 打赏
  • 举报
回复
看不懂
wangk 2009-07-03
  • 打赏
  • 举报
回复
HWND_BROADCAST是给所有顶层窗口广播的,非顶层是收不到的。
oyljerry 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jintianfree 的回复:]
int 和 HWND转换

警告 1 warning C4312: “类型转换”: 从“int”转换到更大的“HWND” d:\programer\windows\helloworld\os\osdlg.cpp 210
警告 2 warning C4311: “类型转换”: 从“HWND”到“int”的指针截断 d:\programer\windows\helloworld\os\osdlg.cpp 224


怎么把这两个警告干掉...
[/Quote]
加上强制类型转换 (HWND)
jintianfree 2009-07-03
  • 打赏
  • 举报
回复
int 和 HWND转换

警告 1 warning C4312: “类型转换”: 从“int”转换到更大的“HWND” d:\programer\windows\helloworld\os\osdlg.cpp 210
警告 2 warning C4311: “类型转换”: 从“HWND”到“int”的指针截断 d:\programer\windows\helloworld\os\osdlg.cpp 224


怎么把这两个警告干掉...
oyljerry 2009-07-03
  • 打赏
  • 举报
回复
你的OnInitDialog 中有SendMessage阻塞了,要等待返回,看你的SendMessage 有没有返回,对话框有没有初始化完成
homesos 2009-07-03
  • 打赏
  • 举报
回复
WM_USER_BROADCAST_COME 定义的值是多少? 不能跟系统产生冲突
homesos 2009-07-03
  • 打赏
  • 举报
回复
HWND_BROADCAST
是发送广播消息

接收窗口有没有定义WM_USER_BROADCAST_COME? 值是不是跟发的一样?

最好用SPY++看一下
jintianfree 2009-07-03
  • 打赏
  • 举报
回复
... ...
yize.link 2009-07-03
  • 打赏
  • 举报
回复
另外,发送信息的时候,那个 hwnd 句柄对不对的说?
hendriclee 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 homesos 的回复:]
HWND_BROADCAST
是发送广播消息

接收窗口有没有定义WM_USER_BROADCAST_COME? 值是不是跟发的一样?

最好用SPY++看一下
[/Quote]
高见
贪玩的老鼠 2009-07-03
  • 打赏
  • 举报
回复
使用postMessage发消息,
可在PreTranslateMessage处理消息
BOOL CDlgXXX::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message==COSDlg::WM_USER_BROADCAST_COME)
{
AfxMessageBox("dd");
}
return CDialog::PreTranslateMessage(pMsg);
}
贪玩的老鼠 2009-07-03
  • 打赏
  • 举报
回复
你有没有接收消息,可在PreTranslateMessage处理消息.
xylicon 2009-07-03
  • 打赏
  • 举报
回复
用PostMessage试试。
jyh_baoding 2009-07-03
  • 打赏
  • 举报
回复
帮顶一个
oyljerry 2009-07-02
  • 打赏
  • 举报
回复
你SendMessage发送的窗口句柄要是第一个窗口,可以用FindWindow查找第一个,hWnd,然后再发送,不然你发送的消息就是发送给自己的对话框了
jintianfree 2009-07-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wozhaolala 的回复:]
HWND_BROADCAST 这是啥,确认是第一个窗口的HWND吗?
[/Quote]

msdn
悟迟 2009-07-02
  • 打赏
  • 举报
回复
HWND_BROADCAST 这是啥,确认是第一个窗口的HWND吗?

15,471

社区成员

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

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