ウィンドウメッセージ |
---|
WM_ACTIVATE |
---|
説明 |
WM_ACTIVATEはウィンドウがアクティブ化するウィンドウ、非アクティブ化するウィンドウに送られます。 |
wParam | ||||||
fActive = LOWORD(wParam); // activation flag wParamの下位WORDにはウィンドウがアクティブ化されたか、非アクティブ化されたかの情報が格納されており、以下のいずれかの値になります。
fMinimized = (BOOL) HIWORD(wParam); // minimized flag wParamの上位WORDはウィンドウが最小化されているかどうかを示します。 この値が0以外なら、ウィンドウは最小化されていることを示します。 |
lParam |
hwndPrevious = (HWND) lParam; // window handle fActiveがWA_INACTIVEのときはアクティブ化するウィンドウのハンドル、fActiveがWA_ACTIVEかWA_CLICKACTIVEのときは非アクティブ化するウィンドウのハンドルが格納されます。 |
戻り値 |
このメッセージをアプリケーションで処理する場合、0を返さなくてはなりません。 |
デフォルトの動作 |
ウィンドウがアクティブ化されており、最小化されていないとき、DefWindowProc関数はキーボードのフォーカスをそのウィンドウに合わせます。 |
解説 |
アクティブ化されるウィンドウと非アクティブ化されるウィンドウが同じ入力キューを使う場合、メッセージはまず非アクティブ化されようとしているトップレベルのウィンドウのウィンドウプロシージャに、次にアクティブ化されようとしているトップレベルのウィンドウのプロシージャに同期して送られます。同じ入力キューを使っていない場合、メッセージは非同期的に送られ、ウィンドウは直ちにアクティブになります。 ウィンドウがマウスクリックによってアクティブ化した場合、WM_MOUSEACTIVATEメッセージも送られます。 |
対応情報 |
Windows NT : バージョン 3.1 以降 Windows : Windows 95 以降 Windows CE : バージョン 1.0 以降 ヘッダー : winuser.h 内で定義 |
WM_ACTIVATEAPP |
---|
説明 |
WM_ACTIVATEAPPメッセージはアクティブウィンドウではないアプリケーションに属するウィンドウがアクティブになるときに送られます。 このメッセージはアクティブになるウィンドウ、非アクティブになるウィンドウの両方に送られます。 |
wParam |
fActive = (BOOL) wParam; // activation flag この値がTRUEならウィンドウはアクティブ化された、FALSEなら非アクティブ化されたことを示します。 |
lParam |
dwThreadID = (DWORD) lParam; // thread identifier fActiveがTRUEなら非アクティブ化されたウィンドウの属するスレッドのIDが、FALSEならアクティブ化されたウィンドウの属するスレッドのIDが格納されます。 |
戻り値 |
アプリケーションでこのメッセージを処理する場合、0を返さなくてはなりません。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: サポートされていません Header: winuser.h 内で定義 |
WM_CANCELMODE |
---|
説明 |
ウィンドウのマウス処理などの内部処理をキャンセルします。 たとえば、ダイアログボックスやメッセージボックスが表示されるときシステムはこのメッセージをアクティブウィンドウに送ります。 また、EnableWindow関数を使ってウィンドウを使用不能にするとき、このメッセージがウィンドウがアクティブかどうかにかかわらず送られます。 |
wParam |
なし |
lParam |
なし |
戻り値 |
アプリケーションでこのメッセージを処理する場合、0を返さなくてはなりません。 |
デフォルトの動作 |
DefWindowProc関数はスクロールバー入力やメニューへの内部処理を止め、マウスのキャプチャーも止めます。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: バージョン 1.0 以降 Header: winuser.h 内で定義 |
WM_CHILDACTIVATE |
---|
説明 |
WM_CHILDACTIVATE メッセージはMDI(Multiple Document Interface)の子ウィンドウにユーザーがウィンドウのタイトルバーをクリックしたとき、ウィンドウがアクティブになったとき、移動したとき、サイズが変更されたときに送られます。 |
wParam |
なし |
lParam |
なし |
戻り値 |
アプリケーションでこのメッセージを処理する場合、0を返さなくてはなりません。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: サポートされていません Header: winuser.h 内で定義 |
WM_CLOSE |
---|
説明 |
WM_CLOSEメッセージは、ウィンドウあるいはアプリケーションが終了するべき信号として送られます。 |
wParam |
なし |
lParam |
なし |
戻り値 |
アプリケーションでこのメッセージを処理する場合、0を返さなくてはなりません。 |
デフォルトの動作 |
DefWindowProc関数はウィンドウを破棄するため、DestroyWindow関数を呼び出します。 |
解説 |
アプリケーションでこのメッセージを処理することにより、ウィンドウが破棄されようとするとき、ユーザーに確認を取り、ユーザーの望むときにだけDestroyWindow関数を呼び出すといったことができます。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: バージョン 1.0 以降 Header: winuser.h 内で定義 |
WM_COMPACTING |
---|
説明 |
メモリが不足しているときにすべてのトップレベルのウィンドウに送られます。 |
wParam |
wCompactRatio = wParam; // compacting ratio CPU時間におけるメモリの圧縮と他の処理との割合を示します。 たとえば0x8000はCPU時間の50%がメモリの圧縮に費やされたことを示します。 |
lParam |
なし |
戻り値 |
アプリケーションでこのメッセージを処理する場合、0を返さなくてはなりません。 |
解説 |
このメッセージを受け取ったアプリケーションはその処理の状況とシステム上で動いている他のアプリケーションの数を考慮し、できる限りメモリを開放するべきです。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: サポートされていません Header: winuser.h 内で定義 |
WM_CREATE |
---|
説明 |
WM_CREATEメッセージはCreateWindow関数やCreateWindowEx関数によってウィンドウが作成されたときに呼び出されます。 このメッセージはウィンドウの作成の後、ウィンドウが表示されるより前に送られます。 このメッセージはCreateWindow関数、CreateWindowEx関数の終了前に送られます。 |
wParam |
なし |
lParam |
lpcs = (LPCREATESTRUCT) lParam; // structure with creation data lParamは作成されるウィンドウの情報を格納したCREATESTRUCT構造体へのポインタです。 CREATESTRUCTのメンバーはCreateWindowEx関数のパラメーターと同一です。 |
戻り値 |
アプリケーションでこのメッセージを処理し、ウィンドウを作成する場合、0を返します。 -1を返すとウィンドウは破棄され、CreateWindow関数、CreateWindowEx関数はNULLを返します。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: バージョン 1.0 以降 Header: winuser.h 内で定義 |
WM_DESTROY |
---|
説明 |
WM_DESTROYメッセージはウィンドウが破棄されるとき、スクリーン上からウィンドウが消えた後に送られます。 このメッセージは、まず破棄されるウィンドウに、そして次に(もしあれば)子ウィンドウに送られます。 メッセージの処理中に、子ウィンドウがすべてまだ存在すると仮定することができます。 |
wParam |
なし |
lParam |
なし |
戻り値 |
アプリケーションでこのメッセージを処理する場合、0を返さなくてはなりません。 |
解説 |
破棄されようとしているウィンドウがSetClipboardViewer関数の呼び出しによって設定されたクリップボードビュアーチェーンの一部である場合、WM_DESTROYが値を返す前にChangeClipboardChain関数を呼び出し、アプリケーションは自身をチェーンから取り除かなければなりません。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: バージョン 1.0 以降 Header: winuser.h 内で定義 |
WM_ENABLE |
---|
説明 |
WM_ENABLEメッセージはウィンドウの有効、無効の状態が変更される時に送られます。 このメッセージはEnableWindow関数が値を返す前、ウィンドウの有効、無効の状態が変更された後に送られます。 |
wParam |
fEnabled = (BOOL) wParam; // enabled/disabled flag この値がTRUEならウィンドウは有効化、FALSEなら無効化されました。 |
lParam |
なし |
戻り値 |
アプリケーションでこのメッセージを処理する場合、0を返さなくてはなりません。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: バージョン 1.0 以降 Header: winuser.h 内で定義 |
WM_ENTERSIZEMOVE |
---|
説明 |
このメッセージはウィンドウがサイズ変更、移動モードになったとき、一度だけ送られてきます。 ウィンドウはユーザーがタイトルバーやサイズ変更境界をクリックしたとき、wParamがSC_MOVEかSC_SIZEのWM_SYSCOMMANDメッセージをDefWindowProc関数が処理するときにサイズ変更、移動モードになります。 |
wParam |
なし 0でなくてはなりません。 |
lParam |
なし 0でなくてはなりません。 |
戻り値 |
アプリケーションでこのメッセージを処理する場合、0を返さなくてはなりません。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: サポートされていません Header: winuser.h 内で定義 |
WM_EXITSIZEMOVE |
---|
説明 |
WM_EXITSIZEMOVEメッセージはサイズ変更、移動モードを抜け出したとき、ウィンドウに一回だけ送られてきます。 ウィンドウはユーザーがタイトルバーやサイズ変更境界をクリックしたとき、wParamがSC_MOVEかSC_SIZEのWM_SYSCOMMANDメッセージをDefWindowProc関数が処理するときにサイズ変更、移動モードになります。 |
wParam |
なし 0でなくてはなりません。 |
lParam |
なし 0でなくてはなりません。 |
戻り値 |
アプリケーションでこのメッセージを処理する場合、0を返さなくてはなりません。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: サポートされていません Header: winuser.h 内で定義 |
WM_GETICON |
---|
説明 |
WM_GETICONメッセージはアプリケーションの大きいアイコン、小さいアイコンのハンドルを取得するために送られます。 大きいアイコンはAlt+Tabダイアログに、小さいアイコンはウィンドウのキャプションに表示されます。 |
wParam | ||||
fType = wParam;// icon type 取得しようとするアイコンの種類を示します。以下の値のどちらか一方を指定します。
|
lParam |
なし |
戻り値 |
fTypeで指定したタイプのアイコンのハンドルが返ります。 アプリケーションがこのメッセージを受け取ったとき、大きいアイコン、小さいアイコンのハンドルを返すか、このメッセージをDefWindowProc関数に渡します。 |
デフォルトの動作 |
DefWindowProc関数はfTypeによって指定されたタイプのアイコンのハンドルを返します。 |
対応情報 |
Windows NT: バージョン 4.0 以降 Windows: Windows 95 以降 Windows CE: バージョン 1.0 以降 Header: winuser.h 内で定義 |
WM_GETMINMAXINFO |
---|
説明 |
WM_GETMINMAXINFOメッセージはウィンドウのサイズや位置が変わるとき、Windowsがウィンドウの最大サイズ最大、最小のトラッキングサイズを知る必要があるときに送られます。 アプリケーションはこのメッセージを使ってウィンドウの最大化された大きさと位置、最大、最小のトラッキングサイズを設定することができます。 |
wParam |
なし |
lParam | ||||||||||
lpmmi = (LPMINMAXINFO) lParam; // address of structure MINMAXINFO構造体のアドレスを指定します。 typedef struct tagMINMAXINFO { // mmi POINT ptReserved; POINT ptMaxSize; POINT ptMaxPosition; POINT ptMinTrackSize; POINT ptMaxTrackSize; } MINMAXINFO;
|
戻り値 |
アプリケーションでこのメッセージを処理する場合、0を返さなくてはなりません。 |
解説 |
最大トラッキングサイズはサイズ変更境界をドラッグして決定される最大のウィンドウサイズ、最小トラッキングサイズはサイズ変更境界をドラッグして決定されるし最小のウィンドウサイズです。 このメッセージをウィンドウプロシージャで捕まえて lpmmi -> ptMinTrackSize = 200; のように値を変更してやることでウィンドウのサイズを制限できます。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: サポートされていません Header: winuser.h 内で定義 |
WM_GETTEXT |
---|
説明 |
ウィンドウテキストを取得します。 |
wParam |
wParam = (WPARAM) cchTextMax; // number of characters to copy 取得するテキストの最大文字数を設定します。 |
lParam |
lParam = (LPARAM) lpszText; // address of buffer for text 取得するテキストを受け取るバッファへのポインタを代入してやります。 |
戻り値 |
取得した文字数が返ります。 |
デフォルトの動作 |
DefWindowProc関数は指定したウィンドウのウィンドウテキストをコピーし、その文字数を返します。 |
解説 |
エディットコントロールでは、コピーされる文字列はエディット内のテキストです。 コンボボックスでは、コピーされるのはエディット内のテキストやスタティックテキストです。 ボタンではコピーされるのはボタンの名前です。 他のウィンドウでは、コピーされるのはウィンドウのタイトルです。 SS_ICONスタイルを持つスタティックコントロールWM_SETTEXTメッセージを使ってアイコンを設定した場合、このメッセージが送られると、lpszTextのはじめの4バイトにアイコンのハンドルが返ります。 リッチエディットコントロールから64K以上のテキストをコピーするときはEM_STREAMOUTかEM_GETSELTEXTを使ってください。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: バージョン 1.0 以降 Header: winuser.h 内で定義 |
WM_GETTEXTLENGTH |
---|
説明 |
アプリケーションはこのメッセージを送信してウィンドウテキストの長さを文字単位で取得します。 この長さにはテキスト終端のNULL文字は含まれません。 |
wParam |
なし 0でなくてはなりません。 |
lParam |
なし 0でなくてはなりません。 |
戻り値 |
文字単位でのテキストの長さが返ります。 |
デフォルトの動作 |
DefWindowProc関数は文字単位でのテキストの長さを返します。 ある状況下ではこの値は実際のテキストの長さよりも大きくなります。 詳細については以下の解説を参照して下さい。 |
解説 |
エディットコントロールでは、コピーされる文字列はエディット内のテキストです。 コンボボックスでは、コピーされるのはエディット内のテキストやスタティックテキストです。 ボタンではコピーされるのはボタンの名前です。 他のウィンドウでは、コピーされるのはウィンドウのタイトルです。 リストボックスのアイテムのテキストの長さを知るためにはLB_GETTEXTLENメッセージを使うこともできます。 ある状況下では、実際のテキスト長よりも大きな値が返ります。 これは、ANSI と Unicode の特定数の混在で起こり、オペレーティングシステムがテキスト内に DBCS 文字が存在する可能性を許容していることが原因です。 しかし、戻り値は、最低でも実際のテキスト長と同じ大きさになります。 そのため、バッファ割り当ての目安として使用できます。 この状況はANSI関数とUnicodeを使うコモンダイアログを同時に用いたときに起こります。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: バージョン 1.0 以降 Header: winuser.h 内で定義 |
WM_INPUTLANGCHANGE |
---|
説明 |
WM_INPUTLANGCHANGEメッセージはアプリケーションの入力言語が変更された後、影響を受ける一番上のウィンドウに送られます。 アプリケーションは固有の設定をした後、DefWindowProc関数に処理を渡し、第1レベルのすべての子ウィンドウにこのメッセージを送ることができます。 子ウィンドウもDefWindowProcに処理を渡し、その子ウィンドウにメッセージを送ることができます。 |
wParam |
charset = wParam; 新しいキーボードレイアウトを表します。 |
lParam |
hkl = (HKL) lParam; 新しいキーボードレイアウトのハンドルを表します。 |
戻り値 |
アプリケーションでこのメッセージを処理する場合、0以外の値を返さなくてはなりません。 |
対応情報 |
Windows NT: バージョン 4.0 以降 Windows: Windows 95 以降 Windows CE: サポートされていません Header: winuser.h 内で定義 |
WM_INPUTLANGCHANGEREQUEST |
---|
説明 |
WM_INPUTLANGCHANGEREQUESTはユーザーがショートカットキーやタスクバーのインジケーターから言語の入力ロケールをを変更したとき、稼動中のアプリケーションに送られます。 アプリケーションはDefWindowProc関数にメッセージを渡して変更を受け入れるか、すぐに値を返して変更を拒否することができます。 |
wParam |
fSysCharSet = (BOOL) wParam このパラメーターの最低のビットはシステム文字セットと共にキーボード・レイアウトへのハンドルを使用することができる場合、1になります。 他のビットは予約されています。 |
lParam |
hkl = (HKL) lParam; 新しいキーボードのハンドルを示します。 |
戻り値 |
このメッセージはポストされるだけでSendされません。よって戻り値は無視されます。 変更を受け入れるにはDefWindowProc関数にメッセージを渡します。 変更を拒否するにはDefWindowProc関数に値を渡さず、0を返してください。 |
デフォルトの動作 |
DefWindowProc関数がこのメッセージを受け取ると、新しい言語ロケールを適用しWM_INPUTLANGCHANGEメッセージを送って設定の変更を通知します。 |
解説 |
タスクバーの言語インジケーターはひとつ以上のキーボードレイアウトがインストールされており、コントロールパネルのキーボードの設定でインジケーターを有効にしたときにのみ表示されます。 |
対応情報 |
Windows NT: バージョン 4.0 以降 Windows: Windows 95 以降 Windows CE: サポートされていません Header: winuser.h 内で定義 |
WM_MOVE |
---|
説明 |
WM_MOVEメッセージはウィンドウの移動が終了したときに送られます。 |
wParam |
なし |
lParam |
xPos = (int)(short) LOWORD(lParam); // horizontal position lParamの下位ワードにはウィンドウのクライアント領域の左上のX座標が格納されます。 yPos = (int)(short) HIWORD(lParam); // vertical position lParamの下位ワードにはウィンドウのクライアント領域の左上のY座標が格納されます。 |
戻り値 |
アプリケーションでこのメッセージを処理する場合、0を返さなくてはなりません。 |
解説 |
座標はオーバーラップドウィンドウとポップアップウィンドウではスクリーン座標で、子ウィンドウではクライアント座標で送られてきます。 |
対応情報 |
Windows NT: バージョン 3.1 以降 Windows: Windows 95 以降 Windows CE: バージョン 1.0 以降 Header: winuser.h 内で定義 |
WM_MOVING |
---|
説明 |
WM_MOVINGメッセージはユーザーが移動中のウィンドウに送られてきます。 アプリケーションはこのメッセージを処理することでドラッグされているウィンドウの位置やサイズを知ることができます。 また、必要ならその値を変更することができます。 |
wParam | ||||||||||||||||
fwSide = wParam; // edge of window to be moved ウィンドウのどの端がドラッグされたかを示す値が以下の値の組み合わせで与えられます。
|
lParam |
lprc = (LPRECT) lParam; // screen coordinates of drag rectangle ドラッグ矩形(?ウィンドウをドラッグしてるときの点線)をスクリーン座標で表したRECT構造体のアドレスが格納されています。 ドラッグ矩形のサイズや場所をアプリケーションで変えるには、この構造体のメンバを書き換えます。 |
戻り値 |
アプリケーションでこのメッセージを処理する場合、TRUEを返さなくてはなりません。 |
対応情報 |
Windows NT: バージョン 4.0 以降 Windows: Windows 95 以降 Windows CE: サポートされていません Header: winuser.h 内で定義 |