GetWindowLong

https://msdn.microsoft.com/ja-jp/library/ms632600.aspx https://msdn.microsoft.com/ja-jp/library/cc428944.aspx https://msdn.microsoft.com/ja-jp/library/ms633577.aspx https://msdn.microsoft.com/ja-jp/library/ms633576.aspx

指定されたウィンドウに関する情報を取得します。拡張ウィンドウメモリ内の指定されたオフセット位置にある long データ(32 ビット値)も取得できます。

ポインタとハンドルの取得には、この関数に代わる関数として GetClassLongPtr 関数があります(ポインタとハンドルは、32 ビット Windows では 32 ビット、64 ビット Windows では 64 ビットです)。32 ビット Windows と 64 ビット Windows の両方と互換性のあるコードを記述するには、GetClassLongPtr 関数を使ってください。

LONG GetWindowLong(
  HWND hWnd,  // ウィンドウのハンドル
  int nIndex  // 取得する値のオフセット
);

パラメータ

hWnd
ウィンドウのハンドルを指定します。クラスも間接的に指定したことになります(指定したウィンドウの属するクラスが使われます)。
nIndex
取得する値の 0 から始まるオフセットを指定します。有効な値は、0 から拡張ウィンドウメモリのバイト数より 4 小さい値までです。たとえば、12 バイト以上の拡張ウィンドウメモリを持つクラスを指定した場合なら、8 を指定すると、3 番目の 32 ビット値が取得できます。拡張ウィンドウメモリ以外のデータを取得するときは、次の値のいずれかを指定します。
動作
GWL_EXSTYLE拡張ウィンドウスタイルを取得します。詳細については、CreateWindowEx 関数の説明を参照してください。
GWL_STYLE を取得します。
GWL_WNDPROCウィンドウプロシージャのアドレス、またはウィンドウプロシージャのアドレスを示すハンドルを取得します。取得したウィンドウプロシージャを呼び出すには、CallWindowProc 関数を使わなければなりません。
GWL_HINSTANCEアプリケーションのインスタンスハンドルを取得します。
GWL_HWNDPARENT親ウィンドウがあれば、そのハンドルを取得します。
GWL_IDウィンドウの ID を取得します。
GWL_USERDATAウィンドウに関連付けられている 32 ビット値を取得します。各ウィンドウは、それに対応する 32 ビット値を持っています。この値は、ウィンドウを作成したアプリケーションが自由に使用できるもので、0 で初期化されています。

hWnd パラメータで指定したウィンドウがダイアログボックスの場合は、次の値も指定できます。

動作
DWL_DLGPROCダイアログボックスプロシージャのアドレス、またはダイアログボックスプロシージャのアドレスを示すハンドルを取得します。取得したダイアログボックスプロシージャを呼び出すには、CallWindowProc 関数を使わなければなりません。
DWL_MSGRESULTダイアログボックスプロシージャ内で処理されたメッセージの戻り値を取得します。
DWL_USERハンドルやポインタなどの、アプリケーション固有の拡張情報を取得します。

戻り値

関数が成功すると、要求したデータ(32 ビット値)が返ります。

関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。

解説

拡張ウィンドウメモリを確保するには、RegisterClassEx 関数に渡す 構造体の cbWndExtra メンバに 0 以外の値を設定します。

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winuser.h で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
Unicode:Windows NT/2000 は Unicode 版と ANSI 版を実装

参照

CallWindowProc, GetWindowLongPtr, RegisterClassEx, SetParent, SetWindowLong,

表示: