我注意到 WM_DEVMODECHANGE
没有 A
/W
变体,但它在 LPARAM
中需要一个字符串>。我没有看到(我能找到的)说明此字符串是窄字符串还是宽字符串的文档。
有谁知道什么适合LPARAM
?
最佳答案
从您的评论到汉斯的回答,您正在发送消息。此消息通常使用 SendMessageTimeout
发送。现在,SendMessageTimeout
有两个版本,SendMessageTimeoutW
和 SendMessageTimeoutA
。当您调用 SendMessageTimeoutW
时,您必须提供 Unicode 文本,而当您调用 SendMessageTimeoutA
时,您必须提供 ANSI 文本。
因此,数据类型的区分不是通过具有两个消息标识符来进行的,而是基于用于发送数据的函数。
当使用 SendMessageW
/SendMessageA
、PostMessageW
/PostMessageA
等时完全相同。
如果您使用 HWND_BROADCAST
调用 SendMessageTimeoutW
,那么您可以预期 ANSI 和 Unicode 窗口都会收到您的消息。消息传递系统确保您发送的数据被转换为适合接收消息的窗口的编码。
关于c - WM_DEVMODECHANGE 的设备名称应该是窄的还是宽的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12642984/