SetClassLongPtrW 関数 (winuser.h)
指定したウィンドウが属するクラスの追加クラス メモリまたは WNDCLASSEX 構造体内の指定したオフセットにある指定した値を置き換えます。
構文
ULONG_PTR SetClassLongPtrW(
[in] HWND hWnd,
[in] int nIndex,
[in] LONG_PTR dwNewLong
);
パラメーター
[in] hWnd
型: HWND
ウィンドウへのハンドルと、ウィンドウが属するクラスを間接的に指定します。
[in] nIndex
型: int
置き換える値。 追加のクラス メモリに値を設定するには、設定する値の正の 0 から始まるバイト オフセットを指定します。 有効な値は、余分なクラス メモリのバイト数から 8 を引いた範囲の 0 です。たとえば、24 バイト以上の余分なクラス メモリを指定した場合、値 16 は 3 番目の整数のインデックスになります。 WNDCLASSEX 構造体以外の値を設定するには、次のいずれかの値を指定します。
[in] dwNewLong
型: LONG_PTR
置換値。
戻り値
型: ULONG_PTR
関数が成功した場合、戻り値は指定したオフセットの前の値になります。 これが以前に設定されていない場合、戻り値は 0 です。
関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError
備考
SetClassLongPtr 関数と GCLP_WNDPROC インデックスを使用してウィンドウ プロシージャを置き換える場合、ウィンドウ プロシージャは、WindowProc コールバック関数の説明で指定されているガイドラインに準拠している必要があります。
GCLP_WNDPROC インデックス SetClassLongPtr を呼び出すと、そのクラスで作成されたすべてのウィンドウに影響するウィンドウ クラスのサブクラスが作成されます。 アプリケーションはシステム クラスをサブクラス化できますが、別のプロセスによって作成されたウィンドウ クラスをサブクラス化することはできません。
RegisterClassEx 関数で使用される WNDCLASSEX 構造体の cbClsExtra メンバーに 0 以外の値を指定して、追加のクラス メモリを予約します。
SetClassLongPtr 関数は注意して使用してください。 たとえば、SetClassLongPtrを使用してクラスの背景色を変更することはできますが、この変更によって、クラスに属するすべてのウィンドウがすぐに再描画されるわけではありません。
手記
winuser.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SetClassLongPtr を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winuser.h (Windows.h を含む) |
ライブラリ | User32.lib |
DLL | User32.dll |
API セットの | ext-ms-win-ntuser-windowclass-l1-1-2 (Windows 10 バージョン 10.0.10240 で導入) |
関連項目
概念
GetClassLongPtr を
リファレンス
RegisterClassEx の
SetWindowLongPtr の
WNDCLASSEX の