次の方法で共有


SetClassLongPtrW 関数 (winuser.h)

指定したウィンドウが属するクラスの追加クラス メモリまたは WNDCLASSEX 構造体内の指定したオフセットにある指定した値を置き換えます。

メモ 32 ビットと 64 ビットの両方の Windows と互換性のあるコードを記述するには、SetClassLongPtrを使用します。 32 ビット Windows 用にコンパイルする場合、SetClassLongPtr は、SetClassLong 関数の呼び出しとして定義されます。

 

構文

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 構造体以外の値を設定するには、次のいずれかの値を指定します。

価値 意味
GCL_CBCLSEXTRA
-20
クラスに関連付けられている余分なメモリのサイズをバイト単位で設定します。 この値を設定しても、既に割り当てられている余分なバイト数は変更されません。
GCL_CBWNDEXTRA
-18
クラス内の各ウィンドウに関連付けられている追加のウィンドウ メモリのサイズをバイト単位で設定します。 この値を設定しても、既に割り当てられている余分なバイト数は変更されません。 このメモリにアクセスする方法については、「SetWindowLongPtrを参照してください。
HBRBACKGROUND の GCLP_
-10
クラスに関連付けられている背景ブラシのハンドルを置き換えます。
GCLP_HCURSOR
-12
クラスに関連付けられているカーソルへのハンドルを置き換えます。
GCLP_HICON
-14
クラスに関連付けられているアイコンのハンドルを置き換えます。
GCLP_HICONSM
-34
クラスに関連付けられている小さなアイコンへのハンドルを取得します。
GCLP_HMODULE
-16
クラスを登録したモジュールのハンドルを置き換えます。
GCLP_MENUNAME
-8
メニュー名文字列へのポインターを置き換えます。 この文字列は、クラスに関連付けられているメニュー リソースを識別します。
GCL_STYLE
-26
ウィンドウ クラス スタイルのビットを置き換えます。
GCLP_WNDPROC
-24
クラスに関連付けられているウィンドウ プロシージャへのポインターを置き換えます。

[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 の

ウィンドウ クラス

WindowProc