Windows (Windows とメッセージ)

Windows ベースのグラフィカル アプリケーションでは、ウィンドウは画面の四角形の領域であり、アプリケーションが出力を表示し、ユーザーからの入力を受け取る場所です。 そのため、Windows ベースのグラフィカル アプリケーションによって最初に行われるタスクの 1 つは、ウィンドウの作成です。

ウィンドウでは、他のウィンドウ (他のアプリケーションのものを含む) と画面を共有します。 ユーザーから入力を受け取ることができるのは、一度に 1 つのウィンドウのみです。 ユーザーは、マウス、キーボード、またはその他の入力デバイスを使用して、このウィンドウとその所有元アプリケーションを操作できます。

このセクションの内容

名前 説明
ウィンドウについて アプリケーションで、ウィンドウの作成と使用、ウィンドウ間のリレーションシップの管理、ウィンドウのサイズ設定、移動、表示を行うために使用されるプログラミング要素について説明します。
ウィンドウの使用 ウィンドウの使用に関連するタスクを実行する例が記載されています。
ウィンドウ機能 ウィンドウの種類、状態、サイズ、位置など、ウィンドウの機能について説明します。
ウィンドウのリファレンス API リファレンスを収録しています。

 

ウィンドウ関数

名前 説明
AdjustWindowRect クライアントの四角形領域の目的のサイズに基づいて、ウィンドウの四角形の必要なサイズを計算します。 その後、ウィンドウの四角形が CreateWindow 関数に渡され、クライアント領域が目的のサイズになっているウィンドウを作成できます。
AdjustWindowRectEx クライアントの四角形領域の目的のサイズに基づいて、ウィンドウの四角形の必要なサイズを計算します。 その後、ウィンドウの四角形が CreateWindowEx 関数に渡され、クライアント領域が目的のサイズになっているウィンドウを作成できます。
AllowSetForegroundWindow SetForegroundWindow 関数を使用して、指定したプロセスで前景ウィンドウを設定できるようにします。 呼び出し元のプロセスでは、既に前景ウィンドウを設定できるようになっている必要があります。 詳細については、このトピックの後半にある「解説」を参照してください。
AnimateWindow ウィンドウを表示または非表示にするときに特殊効果を生成できるようにします。 アニメーションには、ロール、スライド、折りたたみまたは展開、アルファブレンド フェードの 4 種類があります。
AnyPopup 所有されて表示されているトップレベルのポップアップ、または重なり合ったウィンドウが画面に存在するかどうかを示します。 この関数では、呼び出し元アプリケーションのクライアント領域だけでなく、画面全体を検索します。
ArrangeIconicWindows 指定した親ウィンドウのすべての最小化された (アイコン) 子ウィンドウを整列します。
BeginDeferWindowPos 複数ウィンドウの位置構造にメモリを割り当て、その構造にハンドルを返します。
BringWindowToTop 指定したウィンドウを、Z オーダーの先頭に配置します。 これは、ウィンドウがトップレベル ウィンドウの場合にアクティブになります。 ウィンドウが子ウィンドウの場合、その子ウィンドウに関連するトップレベルの親ウィンドウがアクティブになります。
CalculatePopupWindowPosition 指定されたアンカー ポイント、ポップアップ ウィンドウのサイズ、フラグ、オプションの除外四角形を使用して、適切なポップアップ ウィンドウの位置を計算します。 指定されたポップアップ ウィンドウのサイズがデスクトップ ウィンドウのサイズより小さい場合は、CalculatePopupWindowPosition 関数を使用して、指定されたアンカー ポイントに関係なく、ポップアップ ウィンドウ全体がデスクトップ ウィンドウに表示されるようにします。
CascadeWindows 指定された親ウィンドウの指定された子ウィンドウをカスケードします。
ChangeWindowMessageFilter UI 特権の分離 (UIPI) メッセージ フィルターからのメッセージを追加または削除します。
ChangeWindowMessageFilterEx 指定されたウィンドウの UIPI メッセージ フィルターを変更します。
ChildWindowFromPoint 親ウィンドウに属する子ウィンドウ (存在する場合) のどれに、指定されたポイントが含まれるかを示します。 検索対象は、直下の子ウィンドウに限定されます。 孫以下の子孫ウィンドウは検索されません。
ChildWindowFromPointEx 指定された親ウィンドウに属する子ウィンドウ (存在する場合) のどれに、指定されたポイントが含まれるかを示します。 この関数では、非表示、無効、透過的な子ウィンドウは無視できます。 検索対象は、直下の子ウィンドウに限定されます。 孫以下の子孫は検索されません。
CloseWindow 指定されたウィンドウを最小化します (破棄はしません)。
CreateWindow 重なり合った、ポップアップの、または子のウィンドウを作成します。 これは、ウィンドウ クラス、ウィンドウ タイトル、ウィンドウ スタイル、および (必要に応じて) ウィンドウの初期位置とサイズを指定します。 また、この関数では、ウィンドウの親または所有者 (存在する場合) とウィンドウのメニューも指定します。
CreateWindowEx 拡張ウィンドウ スタイルを使用して、重なり合った、ポップアップの、または子のウィンドウを作成します。それ以外の場合、この関数は CreateWindow 関数と同じです。 ウィンドウの作成の詳細と、CreateWindowEx の他のパラメーターの詳細については、「CreateWindow」を参照してください。
DeferWindowPos 指定されたウィンドウの指定された複数ウィンドウの位置構造を更新します。 その後この関数では、更新された構造にハンドルを返します。 EndDeferWindowPos 関数では、この構造の情報を使用して、複数のウィンドウの位置とサイズを同時に変更します。 BeginDeferWindowPos 関数で、この構造が作成されます。
DeregisterShellHookWindow シェル フック メッセージを受信するために登録されている、指定されたシェル ウィンドウの登録を解除します。 これは、RegisterShellHookWindow 関数の呼び出しに登録されているウィンドウの登録を解除します。
DestroyWindow 指定されたウィンドウを破棄します。 この関数では、WM_DESTROY および WM_NCDESTROY メッセージをウィンドウに送信して、それを非アクティブにし、そこからキーボード フォーカスを削除します。 また、この関数では、ウィンドウのメニューを破棄し、スレッド メッセージ キューをフラッシュし、タイマーを破棄し、クリップボードの所有権を削除し、クリップボード ビューアー チェーンを中断します (そのウィンドウがビューアー チェーンの最上部にある場合)。
EndDeferWindowPos 1 回の画面更新サイクルで、1 つ以上のウィンドウの位置とサイズを同時に更新します。
EndTask 指定されたウィンドウを強制的に閉じます。
EnumChildProc EnumChildWindows 関数で使用される、アプリケーション定義のコールバック関数。 これは、子ウィンドウ ハンドルを受け取ります。 WNDENUMPROC 型を使用して、このコールバック関数へのポインターを定義します。 EnumChildProc は、アプリケーション定義の関数の名前のプレースホルダーです。
EnumChildWindows 指定された親ウィンドウに属する子ウィンドウを列挙します。そのために、ハンドルを、各子ウィンドウに、また、アプリケーション定義のコールバック関数に渡します。 EnumChildWindows は、最後の子ウィンドウが列挙されるか、コールバック関数から FALSE が返されるまで続けられます。
EnumThreadWindows スレッドに関連する、子でないすべてのウィンドウを列挙します。そのために、ハンドルを、各ウィンドウに、また、アプリケーション定義のコールバック関数に渡します。 EnumThreadWindows は、最後のウィンドウが列挙されるか、コールバック関数から FALSE が返されるまで続けられます。 特定のウィンドウの子ウィンドウを列挙するには、EnumChildWindows 関数を使用します。
EnumThreadWndProc EnumThreadWindows 関数で使用される、アプリケーション定義のコールバック関数。 これは、スレッドに関連するウィンドウ ハンドルを受け取ります。 WNDENUMPROC 型を使用して、このコールバック関数へのポインターを定義します。 EnumThreadWndProc は、アプリケーション定義の関数の名前のプレースホルダーです。
EnumWindows 画面上のすべてのトップレベル ウィンドウを列挙します。そのために、ハンドルを、各ウィンドウに、また、アプリケーション定義のコールバック関数に渡します。 EnumWindows は、最後のトップレベル ウィンドウが列挙されるか、コールバック関数から FALSE が返されるまで続けられます。
EnumWindowsProc EnumWindows または EnumDesktopWindows 関数で使用されるアプリケーション定義のコールバック関数。 これは、トップレベル ウィンドウ ハンドルを受け取ります。 WNDENUMPROC 型を使用して、このコールバック関数へのポインターを定義します。 EnumWindowsProc は、アプリケーション定義の関数の名前のプレースホルダーです。
FindWindow クラス名とウィンドウ名が指定された文字列と一致するトップレベル ウィンドウへのハンドルを取得します。 この関数で、子ウィンドウは検索されません。 この関数で、大文字と小文字を区別する検索は実行されません。
FindWindowEx クラス名とウィンドウ名が指定された文字列と一致するウィンドウへのハンドルを取得します。 この関数では、指定された子ウィンドウの次のものから、子ウィンドウを検索します。 この関数で、大文字と小文字を区別する検索は実行されません。
GetAltTabInfo 指定されたウィンドウがアプリケーション切り替え (ALT + TAB) ウィンドウの場合に、それに関する状態情報を取得します。
GetAncestor 指定されたウィンドウの先祖へのハンドルを取得します。
GetClientRect ウィンドウのクライアント領域の座標を取得します。 クライアント座標で、クライアント領域の左上隅と右下隅を指定します。 クライアント座標はウィンドウのクライアント領域の左上隅を基準としているため、左上隅の座標は (0,0) です。
GetDesktopWindow デスクトップ ウィンドウへのハンドルを返します。 デスクトップ ウィンドウは画面全体を覆います。 デスクトップ ウィンドウは、上に他のウィンドウが描画される領域です。
GetForegroundWindow 前景ウィンドウ (ユーザーが現在作業しているウィンドウ) へのハンドルを返します。 システムでは、前景ウィンドウを作成するスレッドに、他のスレッドより少し高い優先度を割り当てます。
GetGUIThreadInfo アクティブ ウィンドウまたは指定された GUI スレッドに関する情報を取得します。
GetLastActivePopup 指定されたウィンドウによって所有されているポップアップ ウィンドウのどれが、最後にアクティブだったかを示します。
GetLayeredWindowAttributes レイヤード ウィンドウの不透明度および透明度のカラー キーを取得します。
GetNextWindow Z オーダー内の次または前のウィンドウへのハンドルを取得します。 次のウィンドウは指定されたウィンドウの下にあり、前のウィンドウは上にあります。 指定されたウィンドウが一番上のウィンドウの場合、この関数では、次の (または前の) 一番上のウィンドウへのハンドルを取得します。 指定されたウィンドウがトップレベル ウィンドウの場合、この関数では、次の (または前の) トップレベル ウィンドウへのハンドルを取得します。 指定されたウィンドウが子ウィンドウの場合、この関数では、次の (または前の) 子ウィンドウへのハンドルを検索します。
GetParent 指定されたウィンドウの親または所有者へのハンドルを取得します。
GetProcessDefaultLayout 親または所有者なしでウィンドウが作成されるときに使用される、既定のレイアウトを取得します。
GetShellWindow シェルのデスクトップ ウィンドウへのハンドルを返します。
GetTitleBarInfo 指定されたタイトル バーの情報を取得します。
GetTopWindow 指定された親ウィンドウに関連する子ウィンドウの Z オーダーを調べ、Z オーダーの先頭にある子ウィンドウへのハンドルを取得します。
GetWindow 指定されたウィンドウとの指定されたリレーションシップ (Z オーダー または所有者) を持つウィンドウへのハンドルを取得します。
GetWindowDisplayAffinity 特定のウィンドウの現在の表示アフィニティ設定を、任意のプロセスから取得します。
GetWindowInfo 指定されたウィンドウに関する情報を取得します。
GetWindowModuleFileName 指定されたウィンドウ ハンドルに関連するモジュールの完全なパスとファイル名を取得します。
GetWindowPlacement 指定されたウィンドウの表示状態および復元、最小化、最大化された位置を取得します。
GetWindowRect 指定されたウィンドウの四角形領域の寸法を取得します。 この寸法は、画面の左上隅を基準にした画面座標で指定されます。
GetWindowText 指定されたウィンドウのタイトル バー (ある場合) のテキストをバッファーにコピーします。 指定されたウィンドウがコントロールの場合、そのコントロールのテキストがコピーされます。 ただし、GetWindowText では別のアプリケーションのコントロールのテキストは取得できません。
GetWindowTextLength 指定されたウィンドウのタイトル バーのテキストの長さを文字数で取得します (そのウィンドウにタイトル バーがある場合)。 指定されたウィンドウがコントロールの場合、この関数では、そのコントロール内のテキストの長さを取得します。 ただし、GetWindowTextLength では、別のアプリケーションの編集コントロールのテキストの長さは取得できません。
GetWindowThreadProcessId 指定されたウィンドウを作成したスレッドの識別子と、必要に応じて、そのウィンドウを作成したプロセスの識別子を取得します。
IsChild ウィンドウが、指定された親ウィンドウの子ウィンドウまたは子孫ウィンドウかどうかを示します。 子ウィンドウは、指定された親ウィンドウが親ウィンドウのチェーン内にある場合、その親ウィンドウの直接の子孫です。親ウィンドウのチェーンは、最初の重なり合った、またはポップアップ ウィンドウから子ウィンドウへとつながります。
IsGUIThread 呼び出し元のスレッドが既に GUI スレッドであるかどうかを示します。 また、必要に応じて、スレッドを GUI スレッドに変換することもできます。
IsHungAppWindow Windows で、指定されたアプリケーションが応答していないと見なされるかどうかを示します。 アプリケーションが応答していないと見なされるのは、それが入力を待機していない、スタートアップ処理中でない、内部タイムアウト期間の 5 秒以内に PeekMessage を呼び出していない場合です。
IsIconic 指定されたウィンドウが最小化されている (アイコン) かどうかを示します。
IsProcessDPIAware 現在のプロセスが dpi (ドット/インチ) に対応し、dpi 設定を補正するために UI 要素のサイズを調整するようになっているかを示す値を取得します。
IsWindow 指定したウィンドウ ハンドルが既存のウィンドウを識別するかどうかを判断します。
IsWindowUnicode 指定したウィンドウがネイティブ Unicode ウィンドウかどうかを判断します。
IsWindowVisible 指定されたウィンドウの表示状態を取得します。
IsZoomed ウィンドウが最大化されているかどうかを示します。
LockSetForegroundWindow 前景プロセスでは、LockSetForegroundWindow 関数を呼び出して、SetForegroundWindow 関数の呼び出しを無効にすることができます。
LogicalToPhysicalPoint ウィンドウ内のポイントの論理座標を物理座標に変換します。
MoveWindow 指定されたウィンドウの位置と寸法を変更します。 トップレベル ウィンドウの場合、位置と寸法は画面の左上隅を基準とします。 子ウィンドウの場合は、親ウィンドウのクライアント領域の左上隅を基準とします。
OpenIcon 最小化された (アイコン) ウィンドウを以前のサイズと位置に復元してから、そのウィンドウをアクティブにします。
PhysicalToLogicalPoint ウィンドウ内のポイントの物理座標を論理座標に変換します。
RealChildWindowFromPoint 指定されたポイントにある子ウィンドウへのハンドルを取得します。 検索対象は直下の子ウィンドウに限定されます。孫以下の子孫ウィンドウは検索されません。
RealGetWindowClass ウィンドウの種類を指定する文字列を取得します。
RegisterShellHookWindow シェル アプリケーションに役立つイベントまたは通知に関する特定のメッセージを受信するよう、指定されたシェル ウィンドウを登録します。 受信するイベント メッセージは、指定されたウィンドウのデスクトップに関連するシェル ウィンドウに送信されたものだけです。 メッセージの多くは、SetWindowsHookEx 関数を呼び出し、フックの種類に WH_SHELL を指定した後に受信できるものと同じです。 RegisterShellHookWindow で違う点は、メッセージがコールバック プロシージャではなく、指定されたウィンドウの WindowProc を介して受信される点です。
SetForegroundWindow 指定されたウィンドウを作成したスレッドを前景に配置し、そのウィンドウをアクティブにします。 キーボード入力がそのウィンドウに送られ、さまざまな視覚的な合図がユーザー向けに変更されます。 システムでは、前景ウィンドウを作成したスレッドに、他のスレッドより少し高い優先度を割り当てます。
SetLayeredWindowAttributes レイヤード ウィンドウの不透明度および透明度のカラー キーを設定します。
SetParent 指定された子ウィンドウの親ウィンドウを変更します。
SetProcessDefaultLayout 現在実行中のプロセスに対してのみ、親または所有者なしでウィンドウが作成されるときの既定のレイアウトを変更します。
SetProcessDPIAware 現在のプロセスを dpi 対応として設定します。
SetWindowDisplayAffinity ウィンドウに関連する hWnd で表示アフィニティ設定をカーネル モードで保存します。
SetWindowPlacement 指定されたウィンドウの表示状態および復元、最小化、最大化された位置を設定します。
SetWindowPos 子、ポップアップ、またはトップレベル ウィンドウのサイズ、位置、Z オーダーを変更します。 これらのウィンドウは、画面上での外観に従って並べ替えられます。 一番上のウィンドウのランクが最も高く、それが Z オーダーの最初のウィンドウです。
SetWindowText 指定されたウィンドウのタイトル バー (ある場合) のテキストを変更します。 指定されたウィンドウがコントロールの場合、そのコントロールのテキストが変更されます。 ただし、SetWindowText では別のアプリケーションのコントロールのテキストは取得できません。
ShowOwnedPopups 指定されたウィンドウに所有されるすべてのポップアップ ウィンドウを表示または非表示にします。
ShowWindow 指定されたウィンドウの表示状態を設定します。
ShowWindowAsync 別のスレッドによって作成されたウィンドウの表示状態を設定します。
SoundSentry 音が再生されていることを示すビジュアル信号をトリガーします。
SwitchToThisWindow 指定されたウィンドウにフォーカスを切り替え、それを前景に移動します。
TileWindows 指定された親ウィンドウの指定された子ウィンドウをタイル化します。
UpdateLayeredWindow レイヤード ウィンドウの位置、サイズ、形状、内容、および透明度を更新します。
UpdateLayeredWindowIndirect レイヤード ウィンドウの位置、サイズ、形状、内容、および透明度を更新します。
WindowFromPhysicalPoint 指定された物理ポイントを含むウィンドウへのハンドルを取得します。
WindowFromPoint 指定されたポイントを含むウィンドウへのハンドルを取得します。
WinMain WinMain は、Windows ベースのアプリケーションでのユーザー指定のエントリ ポイントの標準的な名前です。

 

ウィンドウ マクロ

名前 説明
GET_X_LPARAM 特定の LPARAM 値から符号付き x 座標を取得します。
GET_Y_LPARAM 特定の LPARAM 値から符号付き y 座標を取得します。
HIBYTE 指定された 16 ビット値から上位バイトを取得します。
HIWORD 指定された 32 ビット値から上位ワードを取得します。
LOBYTE 指定した値から下位バイトを取得します。
LOWORD 指定した値から下位ワードを取得します。
MAKELONG 指定された値を連結して LONG 値を作成します。
MAKELPARAM メッセージ内で lParam パラメーターとして使用する値を作成します。 このマクロでは、指定された値を連結します。
MAKELRESULT ウィンドウ プロシージャからの戻り値として使用する値を作成します。 このマクロでは、指定された値を連結します。
MAKEWORD 指定された値を連結して WORD 値を作成します。
MAKEWPARAM メッセージ内で wParam パラメーターとして使用する値を作成します。 このマクロでは、指定された値を連結します。

 

ウィンドウ メッセージ

名前 説明
MN_GETHMENU 現在のウィンドウの HMENU を取得します。
WM_GETFONT 現在コントロールでテキストの描画に使用されているフォントを取得します。
WM_GETTEXT ウィンドウに対応するテキストを、呼び出し元によって提供されるバッファーにコピーします。
WM_GETTEXTLENGTH ウィンドウに関連するテキストの長さを文字数で示します。
WM_SETFONT テキストを描画するときにコントロールで使用するフォントを指定します。
WM_SETICON 大きい、または小さい新規のアイコンをウィンドウに関連付けます。 システムでは、大きいアイコンは ALT + TAB ダイアログ ボックスに、小さいアイコンはウィンドウのキャプションにそれぞれ表示します。
WM_SETTEXT ウィンドウのテキストを設定します。

 

ウィンドウの通知

名前 説明
WM_ACTIVATEAPP アクティブなウィンドウとは異なるアプリケーションに属するウィンドウがアクティブになる直前に送信されます。 このメッセージは、ウィンドウがアクティブになるアプリケーションと、ウィンドウが非アクティブになるアプリケーションに送信されます。
ウィンドウは、WindowProc 関数を介してこのメッセージを受け取ります。
WM_CANCELMODE マウス キャプチャなどの特定のモードを取り消すために送信されます。 たとえば、システムでは、ダイアログ ボックスまたはメッセージ ボックスが表示されるときに、このメッセージをアクティブ ウィンドウに送信します。 また、ある特定の関数では、指定されたウィンドウに対し、それがアクティブ ウィンドウかどうかに関係なく、明示的にこのメッセージを送信します。 たとえば、EnableWindow 関数を使用すると、指定されたウィンドウが無効になったときに、このメッセージが送信されます。
WM_CHILDACTIVATE ユーザーがウィンドウのタイトル バーをクリックしたとき、またはウィンドウがアクティブになった、移動された、またはサイズ変更されたときに、子ウィンドウに送信されます。
WM_CLOSE ウィンドウまたはアプリケーションが終了する必要があることを示す信号として送信されます。
WM_COMPACTING 30 から 60 秒の間隔にわたってシステム時間の 12.5% 以上がメモリの圧縮に費やされていることをシステムが検出すると、すべてのトップレベル ウィンドウに送信されます。 これは、システム メモリが不足していることを示します。
WM_CREATE アプリケーションが CreateWindowEx または CreateWindow 関数を呼び出してウィンドウの作成を要求すると、送信されます。 (このメッセージは、関数が戻る前に送信されます。)新しいウィンドウのウィンドウ プロシージャでは、ウィンドウの作成後、ウィンドウが表示される前にこのメッセージを受け取ります。
WM_DESTROY ウィンドウが破棄されるときに送信されます。 これは、破棄されるウィンドウが画面から削除された後、そのウィンドウのウィンドウ プロシージャに送信されます。
このメッセージはまず、破棄されるウィンドウに送信され、次に、子ウィンドウ (ある場合) に対し、それらが破棄されるときに送信されます。 メッセージの処理中は、すべての子ウィンドウがまだ存在していると想定できます。
WM_ENABLE アプリケーションでウィンドウの有効な状態が変更されたときに送信されます。 これは、有効な状態が変更されているウィンドウに送信されます。 このメッセージが送信されるのは、EnableWindow 関数が戻る前、ウィンドウの有効な状態 (WS_DISABLED スタイル ビット) が変更された後です。
WM_ENTERSIZEMOVE ウィンドウが移動またはサイズ変更のモーダル ループに入った後、それに 1 回送信されます。 ウィンドウが移動またはサイズ変更のモーダル ループに入るのは、ユーザーがウィンドウのタイトル バーまたはサイズ設定の境界線をクリックしたとき、またはウィンドウから DefWindowProc 関数に WM_SYSCOMMAND メッセージが渡され、そのメッセージの wParam パラメーターに SC_MOVE または SC_SIZE 値が指定されているときです。 DefWindowProc が戻されると、操作は完了します。
システムでは、ウィンドウ全体のドラッグが有効になっているかどうかに関係なく、WM_ENTERSIZEMOVE メッセージを送信します。
WM_ERASEBKGND ウィンドウの背景を消去する必要があるとき (たとえば、ウィンドウのサイズが変更されたとき) に送信されます。 このメッセージは、ウィンドウの無効になった部分を描画用に準備するために送信されます。
WM_EXITSIZEMOVE ウィンドウが移動またはサイズ変更のモーダル ループを終了した後、それに 1 回送信されます。 ウィンドウが移動またはサイズ変更のモーダル ループに入るのは、ユーザーがウィンドウのタイトル バーまたはサイズ設定の境界線をクリックしたとき、またはウィンドウから DefWindowProc 関数に WM_SYSCOMMAND メッセージが渡され、そのメッセージの wParam パラメーターに SC_MOVE または SC_SIZE 値が指定されているときです。 DefWindowProc が戻されると、操作は完了します。
WM_GETICON ウィンドウに関連する大きいまたは小さいアイコンへのハンドルを取得するためにウィンドウに送信されます。 システムでは、大きいアイコンは ALT + TAB ダイアログに、小さいアイコンはウィンドウのキャプションにそれぞれ表示します。
WM_GETMINMAXINFO ウィンドウのサイズまたは位置が変更される直前に、ウィンドウに送信されます。 アプリケーションでは、このメッセージを使用して、ウィンドウの既定の最大化サイズと位置、または既定の最小または最大の追跡サイズをオーバーライドできます。
WM_INPUTLANGCHANGE アプリケーションの入力言語が変更された後、影響を受ける最上位のウィンドウに送信されます。 アプリケーション固有の設定を行い、メッセージを DefWindowProc 関数に渡す必要があります。これにより、メッセージがすべての第 1 レベルの子ウィンドウに渡されます。 これらの子ウィンドウは、メッセージを DefWindowProc に渡して、メッセージが子ウィンドウに渡されるようにすることができます (以降同様)。
WM_INPUTLANGCHANGEREQUEST ユーザーがホットキー (キーボード コントロール パネル アプリケーションで指定) またはシステム タスク バーのインジケーターを使用して新しい入力言語を選択したときに、フォーカスのあるウィンドウに通知されます。 アプリケーションでは、このメッセージを DefWindowProc 関数に渡して変更を受け入れるか、すぐに戻って変更を拒否 (および阻止) できます。
WM_MOVE ウィンドウが移動された後に送信されます。
WM_MOVING ユーザーが移動しているウィンドウに送信されます。 アプリケーションではこのメッセージを処理して、ドラッグ四角形の位置を監視し、必要に応じてその位置を変更できます。
WM_NCACTIVATE ウィンドウに、その非クライアント領域を変更してアクティブまたは非アクティブ状態を示す必要がある場合に、送信されます。
WM_NCCALCSIZE ウィンドウのクライアント領域のサイズと位置を計算する必要があるときに送信されます。 アプリケーションではこのメッセージを処理して、ウィンドウのサイズまたは位置が変更されたときにウィンドウのクライアント領域の内容を制御できます。
WM_NCCREATE ウィンドウが最初に作成されたときに、WM_CREATE メッセージの前に送信されます。
WM_NCDESTROY ウィンドウに対し、その非クライアント領域が破棄されていることを通知します。 DestroyWindow 関数を使用すると、WM_DESTROY メッセージの後に WM_NCDESTROY メッセージがウィンドウに送信されます。 WM_DESTROY は、ウィンドウに関連する割り当て済みメモリ オブジェクトを解放するために使用されます。
WM_NCDESTROY メッセージは、子ウィンドウが破棄された後に送信されます。 これに対し、WM_DESTROY は子ウィンドウが破棄される前に送信されます。
WM_NULL 操作は実行されません。 アプリケーションでは、受信側ウィンドウで無視されるメッセージを通知する場合に、WM_NULL メッセージを送信します。
WM_PARENTNOTIFY 子ウィンドウが作成または破棄されたとき、または子ウィンドウの上にカーソルがある間にユーザーがマウス ボタンをクリックしたときに、子ウィンドウの親に送信されます。 子ウィンドウが作成されると、システムでは、そのウィンドウを作成する CreateWindow または CreateWindowEx 関数が戻される直前に WM_PARENTNOTIFY を送信します。 子ウィンドウが破棄されると、システムでは、ウィンドウを破棄する処理が行われる前にこのメッセージを送信します。
WM_QUERYDRAGICON 最小化された (アイコン) ウィンドウに送信されます。 ウィンドウがユーザーによってドラッグされようとしていますが、そのクラスに対してアイコンが定義されていません。 アプリケーションでは、アイコンまたはカーソルにハンドルを返すことができます。 ユーザーがアイコンをドラッグしているときに、システムではこのカーソルまたはアイコンを表示します。
WM_QUERYOPEN ユーザーがウィンドウを以前のサイズと位置に復元するように要求したときに、アイコンに送信されます。
WM_QUIT アプリケーションを終了するための要求を示し、アプリケーションで PostQuitMessage 関数が呼び出されたときに生成されます。 これが行われると、GetMessage 関数からゼロが返されます。
WM_SHOWWINDOW ウィンドウが非表示になるか表示される直前に、そのウィンドウに送信されます。
WM_SIZE ウィンドウに対し、そのサイズが変更された後に送信されます。
WM_SIZING ユーザーがサイズ変更しているウィンドウに送信されます。 アプリケーションではこのメッセージを処理して、ドラッグ四角形のサイズと位置を監視し、必要に応じてそのサイズまたは位置を変更できます。
WM_STYLECHANGED SetWindowLong 関数でウィンドウのスタイルが 1 つ以上変更された後に、そのウィンドウに送信されます。
WM_STYLECHANGING SetWindowLong 関数でウィンドウのスタイルが 1 つ以上変更される直前に、そのウィンドウに送信されます。
WM_THEMECHANGED テーマ変更イベントの後に、すべてのウィンドウにブロードキャストされます。 テーマ変更イベントの例としては、テーマのアクティブ化、テーマの非アクティブ化、テーマの切り替えがあります。
WM_USERCHANGED ユーザーがログオン/オフした後に、すべてのウィンドウに送信されます。 ユーザーがログオン/オフすると、システムではユーザー固有の設定を更新します。 システムでは、設定を更新した直後にこのメッセージを送信します。
WM_WINDOWPOSCHANGED SetWindowPos 関数または別のウィンドウ管理関数が呼び出されたために、サイズ、位置、または Z オーダー内の場所が変更されたウィンドウに送信されます。
WM_WINDOWPOSCHANGING SetWindowPos 関数または別のウィンドウ管理関数が呼び出されたために、サイズ、位置、または Z オーダー内の場所が変更されようとしているウィンドウに送信されます。

 

ウィンドウの構造

名前 説明
ALTTABINFO アプリケーション切り替え (ALT + TAB) ウィンドウの状態情報を含みます。
CHANGEFILTERSTRUCT ChangeWindowMessageFilterEx 関数を呼び出して取得された拡張結果情報を含みます。
CLIENTCREATESTRUCT MDI クライアント ウィンドウのメニューおよび最初のマルチドキュメント インターフェイス (MDI) 子ウィンドウに関する情報を含みます。 アプリケーションでは、MDI クライアント ウィンドウの作成時に、CreateWindow 関数の lpParam パラメーターとしてこの構造へのポインターを渡します。
CREATESTRUCT アプリケーションのウィンドウ プロシージャに渡される初期化パラメーターを定義します。 これらのメンバーは、CreateWindowEx 関数のパラメーターと同じです。
GUITHREADINFO GUI スレッドに関する情報を含みます。
MINMAXINFO ウィンドウの最大サイズと位置、およびその最小と最大の追跡サイズに関する情報を含みます。
NCCALCSIZE_PARAMS ウィンドウのクライアント領域のサイズ、位置、有効な内容を計算するために WM_NCCALCSIZE メッセージを処理しているときに、アプリケーションで使用できる情報を含みます。
STYLESTRUCT ウィンドウのスタイルを含みます。
TITLEBARINFO タイトル バーの情報を含みます。
TITLEBARINFOEX タイトル バーの各要素の座標を含めて、TITLEBARINFO 構造に記述された情報をさらに詳しく説明します。
UPDATELAYEREDWINDOWINFO 複数層ウィンドウの位置、サイズ、シェイプ、内容、透明度の情報を提供するために、UpdateLayeredWindowIndirect によって使用されます。
WINDOWINFO ウィンドウの情報を含みます。
WINDOWPLACEMENT 画面上でのウィンドウの配置に関する情報を含みます。
WINDOWPOS ウィンドウのサイズと位置に関する情報を含みます。

 

ウィンドウの定数

名前 説明
拡張ウィンドウ スタイル 拡張ウィンドウ スタイルが必要な場合に指定できるスタイル。
ウィンドウ スタイル ウィンドウ スタイルが必要な場合に指定できるスタイル。 コントロールの作成後、注記を除き、これらのスタイルは変更できません。