sendmessage这个发送消息的函数如何发送字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sendmessage这个发送消息的函数如何发送字符串相关的知识,希望对你有一定的参考价值。

sendmessage这个发送消息的函数如何发送字符串?? 

参考技术A 首先说怎么发送,然后说怎么接收:
自己定义一个消息,加上一个消息响应函数。然后用SendMessage把字符串的地址发过去。
比如VC环境:
在stdafx.h中,
#define MY_MESSAGE USER+1

定义一个函数用来发送,可以是定时器,可以是按钮。
void send()

CString str;
str = "12345";
::SendMessage(hWnd,MY_MESSAGE ,(WPARAM)&str);

在你的类头文件.h中:
afx_msg void MyFunction(WPARAM wParam,LPARAM lParam);

在.cpp中
BEGIN_MESSAGE_MAP下面加入:
ON_MESSAGE(MY_MESSAGE ,MyFunction)

在后面加上你的函数体
void 你的类名::MyFunction(WPARAM wParam,LPARAM lParam)

//如果你发送的字符串的地址在WPARAM中,则用WPARAM来接收
CString* pStr = (CString*)wParam.
AfxMessageBox(*pStr);


你要注意的是:这只能适合SendMessage,如果你要使用PostMessage,就要把你发送的字符串设定为类的成员,或者全局的,不能是临时变量。因为SendMessage是要让消息响应函数执行完了才会返回,所以str是不会被系统释放的。PostMessage是直接返回,于是你传了一个str的地址过去,但是消息响应函数执行的时候,str已经被删除了,这个时候的地址是一个不可知的内容,程序就会发生内存泄露,所以还是推荐你定义一个字符串专门用来发送。
参考技术B hwnd为句柄 s为字串,这是delphi下的
SendMessage(hwnd, $0286,(ord(S[i]) shl 8) + ord(S[i+1]) , 0);中文
SendMessage(hwnd, $0286,word('=') ,0); 字符

猎豹MFC--发送消息SendMessage PostMessage


添加图片控件:
技术分享

技术分享
技术分享
效果如下:
技术分享
先添加文字说明:
技术分享
技术分享
打开头文件 定义变量:
技术分享
在对话框初始化代码部分 添加如下代码:
技术分享

当鼠标左键按下去LButtonDown的时候 实现拖动:
技术分享
设置布尔变量记录,设置捕获 ,设置光标:

技术分享
当鼠标左键弹起:
技术分享
如果处于捕获状态:
   释放捕获
   布尔变量设置为假
定义鼠标坐标
把 鼠标坐标  由语原来窗体客户区转换为屏幕区
由点获取窗口句柄
类型转换
在文本框中显示窗口句柄
技术分享
效果 如下:
技术分享
由窗口句柄获取窗口类名:
技术分享
再由窗口句柄发送WM_GETTEXT 消息获取窗口标题”
技术分享
效果如下:
技术分享
技术分享

双击button1按钮:修改标题:
技术分享

技术分享

发送关闭消息:
技术分享

技术分享














































































以上是关于sendmessage这个发送消息的函数如何发送字符串的主要内容,如果未能解决你的问题,请参考以下文章

怎么用sendmessage()发送两个值

SendMessage 发送的消息在其他类层次结构中未收到

使用findwindow找到隐藏窗口使用sendmessage发送wm_close消息,无法关闭。

SendMessage函数是干啥用的 它都有哪些参数

如何用 sendmessage 发送键盘按键消息

BCB 如何让Application收到SendMessage发送来的消息