postmessage 和 sendmessage 的区别

本文详细介绍了如何利用SendMessage函数实现剪切、复制和粘贴操作,并通过WM_COPYDATA消息在进程间高效地传递少量只读数据,确保数据在被接收方处理前不会被修改。

sendmessage: 将指定的消息发送到一个或多个窗口,直到窗口将消息处理完后才返回。

postmessage: 将一个消息发送到线程相关的消息队列中,不等线程处理消息就返回。消息队列里的消息通过Getmessage 或 PeekMesage 函数而获得。


1)使用SendMessage 来实现剪切、复制和粘贴

SendMessage(hwnd, WM_COPY, 0,0);

SendMessage(hwnd, WM_CUT,0,0);

SendMessage(hwnd, WM_PASTE, 0,0);

2) SendMessage  发送WM_COPYDATA消息在进程间传送数据

WM_COPYDATA消息允许进程间拷贝少量只读数据。应该使用SendMessage 方法来保证接收方在数据复制完前不返回,

这样发送方就不可能对数据进行删除和修改的操作。

如:

string strData = "VC 知识库 " ; 

COPYDATASTRUCT cds;

cds.dwData = 0;

cds.cbData = strData.Length();

cds.lpData = strData.c_str();

::SendMessage(hwnd, WM_COPYDATA, NULL, (LPARAM)&cds); 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值