2

A/Wのバリエーションがないことに気付きましWM_DEVMODECHANGEたが、 に文字列が必要LPARAMです。この文字列が狭いか広いかを示すドキュメント (見つけることができる) はありません。

に適切なものを知っている人はいますLPARAMか?

4

2 に答える 2

3

WM_DEVMODECHANGEは単なる数字であり、そのうちの1つだけです。狭い文字列と広い文字列のどちらを取得するかは、ウィンドウがUnicodeであるかどうかによって決まります。これは、CreateWindowExAまたはCreateWindowExW()のいずれかを使用して作成した方法によって決まります。そして、後でIsWindowUnicode()で見つけることができるもの。

于 2012-09-28T16:17:00.120 に答える
3

コメントからハンスの回答まで、あなたはメッセージを送信しています。通常、このメッセージは で送信されSendMessageTimeoutます。現在、SendMessageTimeoutと の 2 つのバージョンがSendMessageTimeoutWありSendMessageTimeoutAます。を呼び出すときはSendMessageTimeoutWUnicode テキストを指定する必要があり、呼び出すときはSendMessageTimeoutAANSI テキストを指定する必要があります。

したがって、データのタイプの識別は、2 つのメッセージ ID を持つことによって行われるのではなく、データを送信するために使用される関数に基づいて行われます。

SendMessageW/ SendMessageAPostMessageW/などを使用する場合もまったく同じことが当てはまりますPostMessageA

を呼び出す場合はSendMessageTimeoutWHWND_BROADCASTANSI と Unicode の両方のウィンドウがメッセージを受け取ることが期待できます。メッセージング システムは、送信したデータが、メッセージを受信するウィンドウに適したエンコードに変換されることを保証します。

于 2012-09-29T09:23:14.037 に答える