我注意到A
没有W
/ WM_DEVMODECHANGE
个版本,但LPARAM
需要一个字符串。我看到没有文件(我能找到)告诉这个字符串是窄还是宽。
有谁知道什么适合LPARAM
?
答案 0 :(得分:3)
WM_DEVMODECHANGE
只是一个数字,而且只有其中一个。是否获得窄字符串或宽字符串取决于窗口是否为Unicode。这取决于您使用CreateWindowExA或CreateWindowExW()创建它的方式。以后你可以用IsWindowUnicode()找到一些东西。
答案 1 :(得分:3)
从您的评论到Hans的回答,您正在发送消息。此邮件通常与SendMessageTimeout
一起发送。现在,SendMessageTimeout
有两个版本,SendMessageTimeoutW
和SendMessageTimeoutA
。当您致电SendMessageTimeoutW
时,您必须提供Unicode文本,当您致电SendMessageTimeoutA
时,您需要提供ANSI文本。
因此,通过使用两个消息标识符来区分数据类型,而不是基于用于发送数据的函数。
使用SendMessageW
/ SendMessageA
,PostMessageW
/ PostMessageA
等时,情况完全相同。
如果您使用SendMessageTimeoutW
致电HWND_BROADCAST
,那么您可以预期ANSI和Unicode窗口都会收到您的消息。消息传递系统确保您发送的数据转换为接收消息的窗口的相应编码。