请教下,想自定义一个消息问题

xianymo2012 2012-04-06 09:15:01
我想实现自顶一个消息,并且当窗口接受到这个消息时,自定义一个函数来处理。

宏定义:#define WM_YOURMESSAGE WM_USER+100

我想在WM_YOURMESSAGE能够携带一些参数,比如带一个结构体。那该怎么定义这个消息的结构啊,

然后窗口接受到这个消息后,怎么把消息中的这个结构体变量给取出来啊,

请写详细点,谢谢。
...全文
86 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Behard 2012-04-07
  • 打赏
  • 举报
回复
特别注意:
如果跨进程的话,可能是出错的哟
ccrun.com 2012-04-07
  • 打赏
  • 举报
回复
基本就是1楼说的这些了。
关于参数的生命周期问题,我的建议是这样:如果用TYOURMESSAGEParam Param;这样的定义方式,建议用SendMessage,如果是用new创建的对象,可以用SendMessage,返回后delete,或者用PostMessage,由对方来负责delete
ccrun.com 2012-04-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
特别注意:
如果跨进程的话,可能是出错的哟
[/Quote]

是的,跨进程的话,推荐WM_COPYDATA消息。
yoke_wolf 2012-04-07
  • 打赏
  • 举报
回复

#define WM_YOURMESSAGE WM_USER+100
...
typedef struct ... TYOURMESSAGEParam;
...
TYOURMESSAGEParam Param;

....
SendMessage(DstHandle, WM_YOURMESSAGE, (WPARAM)¶m, NULL);

...
void __fastcall XXXXForm::WndProc(TMessage msg)
{
if(msg.Msg == WM_YOURMESSAGE)
{
ProcessYourMessage((TYOURMESSAGEParam *)msg.wParam);
rerutn ;
}
}
void __fastcall XXXXForm::ProcessYourMessage(TYOURMESSAGEParam* pMsgParam)
{
....
}


注意用PostMessage的话保证 TYOURMESSAGEParam Param 变量有效性

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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