SetWindowLongA 関数 (winuser.h)
指定したウィンドウの属性を変更します。 また、この関数は、指定したオフセットの 32 ビット (long) 値を追加のウィンドウ メモリに設定します。
構文
LONG SetWindowLongA(
[in] HWND hWnd,
[in] int nIndex,
[in] LONG dwNewLong
);
パラメーター
[in] hWnd
型: HWND
ウィンドウへのハンドルと、ウィンドウが属するクラスを間接的に指定します。
[in] nIndex
型: int
設定する値への 0 から始まるオフセット。 有効な値は、余分なウィンドウ メモリのバイト数から整数のサイズを引いた範囲の 0 です。 その他の値を設定するには、次のいずれかの値を指定します。
価値 | 意味 |
---|---|
|
新しい 拡張ウィンドウ スタイルのを設定します。 |
|
新しいアプリケーション インスタンス ハンドルを設定します。 |
|
子ウィンドウの新しい識別子を設定します。 ウィンドウを最上位のウィンドウにすることはできません。 |
|
新しい ウィンドウ スタイルのを設定します。 |
|
ウィンドウに関連付けられているユーザー データを設定します。 このデータは、ウィンドウを作成したアプリケーションで使用するためのものです。 その値は、最初は 0 です。 |
|
ウィンドウ プロシージャの新しいアドレスを設定します。
ウィンドウが呼び出し元スレッドと同じプロセスに属していない場合は、この属性を変更できません。 |
次の値は、hWnd パラメーターがダイアログ ボックスを識別する場合にも使用できます。
[in] dwNewLong
型: long
置換値。
戻り値
型: long
関数が成功した場合、戻り値は指定した 32 ビット整数の前の値になります。
関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError
指定した 32 ビット整数の前の値が 0 で、関数が成功した場合、戻り値は 0 ですが、関数は最後のエラー情報をクリアしません。 これにより、成功または失敗を判断することが困難になります。 これに対処するには、SetWindowLongを呼び出す前
備考
特定のウィンドウ データはキャッシュされるため、SetWindowLong
SetWindowLong を GWL_WNDPROC インデックスと共に使用してウィンドウ プロシージャを置き換える場合、ウィンドウ プロシージャは、WindowProc コールバック関数の説明で指定されているガイドラインに従う必要があります。
SetWindowLong
GWL_WNDPROC インデックス SetWindowLong を呼び出すと、ウィンドウの作成に使用されるウィンドウ クラスのサブクラスが作成されます。 アプリケーションはシステム クラスをサブクラス化できますが、別のプロセスによって作成されたウィンドウ クラスをサブクラス化することはできません。
SetWindowLong 関数は、特定のウィンドウ クラスに関連付けられているウィンドウ プロシージャを変更してウィンドウ サブクラスを作成し、システムが前のウィンドウ プロシージャではなく新しいウィンドウ プロシージャを呼び出します。 アプリケーションは、CallWindowProcを呼び出して、新しいウィンドウ プロシージャで処理されていないメッセージ
RegisterClassEx 関数で使用される WNDCLASSEX 構造体の cbWndExtra メンバーに 0 以外の値を指定して、追加のウィンドウ メモリを予約します。
子ウィンドウの親 変更するには、GWL_HWNDPARENT インデックスを使用して SetWindowLong を呼び出す必要があります。 代わりに、SetParent 関数を使用します。
ウィンドウに CS_CLASSDC または CS_OWNDCのクラス スタイルがある場合は、拡張ウィンドウ スタイルを WS_EX_COMPOSITED または WS_EX_LAYERED設定しないでください。
SetWindowLong
例
例については、「Windowのサブクラス化」を参照してください。
手記
winuser.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SetWindowLong を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winuser.h (Windows.h を含む) |
ライブラリ | User32.lib |
DLL | User32.dll |
API セットの | ext-ms-win-ntuser-windowclass-l1-1-0 (Windows 8 で導入) |
関連項目
CallWindowProc の
概念
GetWindowLong の
リファレンス
RegisterClassEx の
SetParent を
SetWindowLongPtr の
WNDCLASSEX の