GetWindowLong(A)

指定されたウィンドウに関しての情報を取得します。また、拡張ウィンドウメモリから、指定されたオフセットにある32ビット値を取得することもできます。

ポインタまたはハンドルを取得する場合、この関数は GetWindowLongPtr に取って代わられています。これは、ポインタやハンドルが32ビット版 Windows では32ビットであるのに対し、64ビット版 Windows では64ビットであるためです。32ビット版と64ビット版の Windows で共通して利用できるコードを記述する場合には、 GetWindowLongPtr 関数を使用する必要があります。

LONG GetWindowLongA(
    HWND hWnd,   // ウィンドウハンドル
    int  nIndex  // 取得するデータの指定
);

USER32.DLL

引数

hWnd

情報を取得するウィンドウのハンドルを指定します。

nIndex

どの情報を取得するのかを指定します。

拡張ウィンドウメモリからデータを取得するときは、 0 から始まるオフセットをバイト単位で指定します。有効なオフセットは、 0 から (拡張ウィンドウメモリのバイト数 - 4) までです。

拡張ウィンドウメモリ以外の値を取得するには、次のいずれかを指定します。

取得される属性
-4 (GWL_WNDPROC) ウィンドウプロシージャのアドレス

直接ウィンドウプロシージャを呼び出すには CallWindowProc 関数を使わなければなりません。

-6 (GWL_HINSTANCE) アプリケーションのインスタンスハンドル
-8 (GWL_HWNDPARENT) 親ウィンドウのハンドル
-16 (GWL_STYLE) ウィンドウスタイル
-20 (GWL_EXSTYLE) 拡張ウィンドウスタイル
-21 (GWL_USERDATA) ウィンドウに関連付けられたアプリケーション定義の32ビット値
-12 (GWL_ID) ウィンドウ ID

hWnd パラメータがダイアログボックスのハンドルである場合には、以下の値を指定することもできます。

取得される属性
0 (DWL_MSGRESULT) ダイアログボックスプロシージャで処理されたメッセージの戻り値
4 (DWL_DLGPROC) ダイアログボックスプロシージャのアドレス

直接ダイアログボックスプロシージャを呼び出すには CallWindowProc 関数を使わなければなりません。

8 (DWL_USER) アプリケーション定義の情報(ハンドルやポインタなど)

戻り値

成功すると、取得された32ビット値が返ります。

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

取得した値が 0 だったとき、成功しても 0 が返ります。この問題を解決するには、 SetLastError 関数を引数 0 で呼び出してから、 GetWindowLong 関数を呼び出します。関数が失敗すると、直後に呼び出す GetLastError 関数が 0 以外の値を返します。

解説

拡張ウィンドウメモリは、 RegisterClassEx 関数に渡す WNDCLASSEX 構造体(または RegisterClass 関数に渡す WNDCLASS 構造体)の cbWndExtra メンバに 0 以外の値を設定することによって確保します。

対応情報

Windows 95 以降 / Windows NT 3.1 以降