c - WM_DEVMODECHANGE 的设备名称应该是窄的还是宽的?

标签 c winapi unicode

我注意到 WM_DEVMODECHANGE 没有 A/W 变体,但它在 LPARAM 中需要一个字符串>。我没有看到(我能找到的)说明此字符串是窄字符串还是宽字符串的文档。

有谁知道什么适合LPARAM

最佳答案

从您的评论到汉斯的回答,您正在发送消息。此消息通常使用 SendMessageTimeout 发送。现在,SendMessageTimeout 有两个版本,SendMessageTimeoutWSendMessageTimeoutA。当您调用 SendMessageTimeoutW 时,您必须提供 Unicode 文本,而当您调用 SendMessageTimeoutA 时,您必须提供 ANSI 文本。

因此,数据类型的区分不是通过具有两个消息标识符来进行的,而是基于用于发送数据的函数。

当使用 SendMessageW/SendMessageAPostMessageW/PostMessageA 等时完全相同。

如果您使用 HWND_BROADCAST 调用 SendMessageTimeoutW,那么您可以预期 ANSI 和 Unicode 窗口都会收到您的消息。消息传递系统确保您发送的数据被转换为适合接收消息的窗口的编码。

关于c - WM_DEVMODECHANGE 的设备名称应该是窄的还是宽的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12642984/

相关文章:

c++ - 段错误和内存泄漏

c - 是否可以使用 .d 文件来编译所有依赖的 c 文件?

winapi - 是否可以直接从 GDI+ 位图进行 BitBlt?

c++ - 如何使用 winapi 等待非子进程?

c# - 需要 AcquireCredentialsHandle win32 api 函数的 C# 签名

ruby - 将 unicode 代码点转换为 Ruby 中的字符串字符

c - 斐波那契搜索

c - linux select() 系统调用如何监视两个文件(文件描述符)以及如何使用计时器参数

unicode - U+21b4的向上版本

windows - 在 R 的 expression() 命令中使用 Unicode