2012-09-28 17 views

回答

3

從您的意見到Hans的回答,您正在發送消息。此消息通常以SendMessageTimeout發送。現在,SendMessageTimeout有兩個版本,SendMessageTimeoutWSendMessageTimeoutA。當您撥打SendMessageTimeoutW時,您必須提供Unicode文本,並且當您致電SendMessageTimeoutA時,您將提供ANSI文本。

因此,數據類型的區分不是通過具有兩個消息標識符來實現的,而是基於用於發送數據的函數。

當使用SendMessageW/SendMessageAPostMessageW/PostMessageA等等時,也是如此。

如果您撥打SendMessageTimeoutW,使用HWND_BROADCAST,那麼您可以預期ANSI和Unicode窗口都會收到您的消息。消息傳遞系統可確保將您發送的數據轉換爲接收消息的窗口的適當編碼。

+0

謝謝。我應該檢查SendMessageTimeout上的A/W。 D'哦! :) – Mordachai

3

WM_DEVMODECHANGE只是一個數字,只有其中一個。無論你是窄字符還是寬字符,都取決於窗口是否是Unicode。這取決於您如何使用CreateWindowExA或CreateWindowExW()創建它。還有一些你可以稍後用IsWindowUnicode()找到。

+0

我發送此消息,在這種情況下。所以我會發送一個字符串在我的窗口的註冊格式... – Mordachai

+0

呃,等等。當您自己生成它時,通常會將其廣播並使用SendMessageTimeout()。 –

相關問題