WM_USER メッセージコードは、アプリケーション定義のメッセージを定義するのに使用されます。通常、アプリケーション定義のメッセージを (WM_USER + X) の形で定義します。
#define WM_USER 0x0400
メッセージコードには以下の五つの範囲があり、それぞれ役割が異なります。
範囲 | 意味 |
---|---|
0 〜 (WM_USER - 1) | システムが使用するために予約されているメッセージです。 |
WM_USER 〜 0x7FFF | プライベートウィンドウクラスが使用するのに使うことのできる整数メッセージです。 |
WM_APP (0x8000) 〜 0xBFFF | アプリケーションが使用するのに使うことのできるメッセージです。 |
0xC000 〜 0xFFFF | RegisterWindowMessage 関数によって定義される、アプリケーションが使用するのに使うことのできる文字列メッセージです。 |
0x10000 〜 | 予約されています。 |
0 〜 (WM_USER - 1) の範囲のメッセージは、システムによって定義されています。この範囲の中で明示的に定義されていない値は今後の拡張のために予約されています。
WM_USER 〜 0x7FFF の範囲のメッセージは、プライベートウィンドウクラスの中でメッセージを送信するのに、アプリケーションが定義して使用することができます。定義済みウィンドウクラスではすでにこの範囲の値を定義しているので、アプリケーション中で重要なメッセージを定義するのにこの範囲の値を使用してはいけません。例えば、ボタンコントロール・エディットコントロール・リストボックス・コンボボックスなどのような定義済みコントロールはこれらの値を使用しています。メッセージを拡張してそのメッセージコードに同じ意味を持たせるようにアプリケーションが設計されていない限りは、このメッセージを他のアプリケーションに送ってはいけません。
WM_APP (0x8000) 〜 0xBFFF の範囲のメッセージは、アプリケーションがプライベートメッセージとして使用するために使うことができます。この範囲のメッセージは、システム定義のメッセージと競合することはありません。
0xC000 〜 0xFFFF の範囲のメッセージは、アプリケーション実行時に、 RegisterWindowMessage 関数を呼び出して、文字列のメッセージコードを取得したときに定義されます。同じ文字列を登録したすべてのアプリケーションが、関連付けられたメッセージコードをメッセージ交換に使用することができます。ただし、実際のメッセージコードは一定の値ではないので、異なるセッション間でも同じ値であると仮定してはいけません。
0x10000 以上の範囲のメッセージは、今後の拡張のために予約されています。
Windows 95 以降 / Windows NT 3.1 以降