高分求解---关于自定义消息的问题

byybyybyy 2004-05-07 10:09:53
对话框程序:
自定义消息:#define umsg WM_USER + 50
添加消息映射,并编写消息响应函数,出现如下问题:
一:必须将消息映射添加到xxxDlg那个类,放到其他的类都不起作用?
二:发送消息给本窗口(进程),可以正确接收,但是发给别的窗口(进程)会得到乱码,我的发送和接收函数大致是这样写的:
HWND AAA = ::FindWindow(NULL,"mfc_test1");
::SendMessage(AAA,umsg,0,(LPARAM)"dfsdddfff");
接收:
LRESULT Cmfc_test1Dlg::mymessage(WPARAM wParam, LPARAM lParam)
{
MessageBox((LPCTSTR)lParam,"收到消息",MB_OK);
return 0;
}

另一个问题,当我想给多个窗口发相同的消息时我先群发消息,感兴趣的窗口自己加消息映射函数来接收该消息,我采用的方法和上面的大致雷同,只是将自定义消息改为注册消息:UINT umsg = RegisterWindowMessage("MyMessage") 发消息方式为
::SendMessage(HWND_BROADCAST,umsg,0,(LPARAM)"dfsdddfff");接收端同样
注册消息 UINT umsg = RegisterWindowMessage("MyMessage")接收消息的函数和上面的相同,但是却收不到任何消息,即使是本窗口也收不到,请高手指点一二


多谢了,我是新手!
...全文
94 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wbusy 2004-05-11
  • 打赏
  • 举报
回复
以下是代码片断,功能是实现程序的单一实例,你可以参考一下。
在*App.h中:
static const GUID g_ThisAppID =
{ 0xf936292f, 0xebc3, 0x4183, { 0xa4, 0x94, 0xc1, 0x11, 0x58, 0xb, 0xd7, 0x6f } };
// Register Check Window Msg
const UINT WM_CheckMe = RegisterWindowMessage("g_ThisAppID");
在BOOL *App :: InitInstance()
{
...
m_hMutex = CreateMutex(NULL, TRUE, "g_ThisAppID");
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
DWORD result;
LRESULT ok = SendMessageTimeout(HWND_BROADCAST,
WM_CheckMe, // 发送消息
0, 0,
SMTO_BLOCK |
SMTO_ABORTIFHUNG,
200,
&result);
return FALSE;
}
...
}
在对话框的消息映射宏中添加:ON_REGISTERED_MESSAGE(WM_CheckMe, OnCheckMe)
添加响应函数:
LRESULT C*Dlg::OnCheckMe(WPARAM wParam, LPARAM lPAram)
{
SetForegroundWindow();
ShowWindow(SW_RESTORE);
return LRESULT();
}
上面的GUID可以用VC工具集中的guidgen生成。
zhaolaoxin 2004-05-08
  • 打赏
  • 举报
回复
在一个进程里定义的消息,其他没有处理该消息的进程是无法处理的
wbusy 2004-05-08
  • 打赏
  • 举报
回复
1、g_YourMsg = RegisterWindowMessage()
2、在你需要响应g_YourMsg的地方添加宏:
ON_REGISTERED_MESSAGE(g_YourMsg, OnYourMsg)
OnYourMsg是响应函数。原型:LRESULT OnYourMsg(WPARAM wParam, LPARAM lParam);
3、在你需要发消息的地方用:SendMessage()或者SendMessageTimeout();
byybyybyy 2004-05-08
  • 打赏
  • 举报
回复
我在所有的进程里都像wbusy(woods)那样做了,可是就是收不到信息,有没有高手给个小例子呀?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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