PostMessage出现1159错误:“The message can be used only with synchronous operations”

一般是由于在PostMessage中以指针作为参数。

 

  
    
1 ::PostMessage(h_edit, WM_SETTEXT, 0 , (LPARAM)text.GetBuffer())

由于PostMessage是非阻塞的,因此当发送消息之后,程序可能已经将该指针修改,那么该消息的接收方有可能获得的就是一个不安全的指针。

为了安全考虑,Post发送消息时,不能以指针为参数;SendMessage因为是阻塞的,所以不存在这个问题。

 

解决:

1. 使用SendMessage

2. 使用WM_CHAR消息

 

参考:

Win32 Q&A, MSJ November 1997

Error 1159 when calling PostThreadMessage - CodeGuru Forums

你可能感兴趣的:(message)