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