A
/W
のバリエーションがないことに気付きましWM_DEVMODECHANGE
たが、 に文字列が必要LPARAM
です。この文字列が狭いか広いかを示すドキュメント (見つけることができる) はありません。
に適切なものを知っている人はいますLPARAM
か?
WM_DEVMODECHANGE
は単なる数字であり、そのうちの1つだけです。狭い文字列と広い文字列のどちらを取得するかは、ウィンドウがUnicodeであるかどうかによって決まります。これは、CreateWindowExAまたはCreateWindowExW()のいずれかを使用して作成した方法によって決まります。そして、後でIsWindowUnicode()で見つけることができるもの。
コメントからハンスの回答まで、あなたはメッセージを送信しています。通常、このメッセージは で送信されSendMessageTimeout
ます。現在、SendMessageTimeout
と の 2 つのバージョンがSendMessageTimeoutW
ありSendMessageTimeoutA
ます。を呼び出すときはSendMessageTimeoutW
Unicode テキストを指定する必要があり、呼び出すときはSendMessageTimeoutA
ANSI テキストを指定する必要があります。
したがって、データのタイプの識別は、2 つのメッセージ ID を持つことによって行われるのではなく、データを送信するために使用される関数に基づいて行われます。
SendMessageW
/ SendMessageA
、PostMessageW
/などを使用する場合もまったく同じことが当てはまりますPostMessageA
。
を呼び出す場合はSendMessageTimeoutW
、HWND_BROADCAST
ANSI と Unicode の両方のウィンドウがメッセージを受け取ることが期待できます。メッセージング システムは、送信したデータが、メッセージを受信するウィンドウに適したエンコードに変換されることを保証します。