现在的位置: 首页 > 综合 > 正文

postmessage 和 sendmessage 的区别

2019年01月13日 ⁄ 综合 ⁄ 共 523字 ⁄ 字号 评论关闭

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); 

抱歉!评论已关闭.