VC MFC C++ SendMessage 传递字符串参数

这篇博客介绍了SendMessage函数在Windows编程中的应用,特别是如何利用它来发送自定义消息和传递字符串信息。示例代码展示了如何创建一个自定义消息WM_MYMESSAGE,并通过WM_USER进行扩展。同时,解释了WPARAM和LPARAM参数的用途,指出当需要传递字符串时,需要使用字符串地址作为LPARAM。博客还提供了发送和接收字符串消息的代码片段,帮助理解消息处理的过程。
摘要由CSDN通过智能技术生成

SendMessage函数的原型为

LRESULT SendMessage(
  HWND hWnd,
  UINT Msg,
  WPARAM wParam,
  LPARAM lParam
);

hWnd:其窗口过程将接收消息的窗口的句柄。如果此参数为HWND\u BROADCAST((HWND)0xffff),则消息将发送到系统中的所有顶级窗口,包括禁用或不可见的无主窗口、重叠窗口和弹出窗口;但消息不会发送到子窗口

Msg:要发送的消息,可以是自定义消息,有关系统提供的消息的列表,请参阅系统定义的消息https://docs.microsoft.com/en-us/windows/win32/winmsg/about-messages-and-message-queues

wParam:特定于消息的信息

lParam:特定于消息的信息

用于消息传递,其中有WPARAM 和 LPARAM 两个附加参数,可以传递一些附加信息,由于它们是unsigned int 型的,所以只能传递数字,如果想要传递字符串之类的则需要使用指针,即字符串的地址。

两种发送方式,第一种查看其定义其实是调用的第二种

AfxGetMainWnd()->SendMessage(UINT message, WPARAM wParam, LPARAM lParam) 通过句柄调用发送消息
SendMessage(m_hWnd, message, wParam, lParam); }// 发送消息,参数输入句柄

使用lParam发送字符串消息示例

AA发送:

    CString msg = "我是字符串"
    AfxGetMainWnd()->SendMessage(WM_MYMESSAGE, 1002, (LPARAM)(LPCTSTR)msg);
WM_MYMESSAGE是我自定义的消息:#define WM_MYMESSAGE WM_USER+200

BB接收处理:

LRESULT CIRStudy_ToolDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)

       if (wParam == 1002){// AA发来的消息
        CString rmsg = (LPCTSTR)lParam;
        printf("接收到的字符串消息:%s\r\n", rmsg);
    }

 }
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值