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消息
参考:
浙公网安备 33010602011771号