次の方法で共有


SetClassLongA 関数 (winuser.h)

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

メモ この関数は SetClassLongPtr 関数に置き換わりました。 32 ビットバージョンと 64 ビットバージョンの両方の Windows と互換性のあるコードを記述するには、 SetClassLongPtr を使用します
 

構文

DWORD SetClassLongA(
  [in] HWND hWnd,
  [in] int  nIndex,
  [in] LONG dwNewLong
);

パラメーター

[in] hWnd

型: HWND

ウィンドウへのハンドルと、ウィンドウが属するクラスを間接的に指定します。

[in] nIndex

型: int

置き換える値。 追加のクラス メモリで 32 ビット値を設定するには、設定する値の正の 0 から始まるバイト オフセットを指定します。 有効な値は、余分なクラス メモリのバイト数から 4 を引いた範囲の 0 です。たとえば、12 バイト以上の余分なクラス メモリを指定した場合、値 8 は 3 番目の 32 ビット整数のインデックスになります。 WNDCLASSEX 構造体から他の値を設定するには、次のいずれかの値を指定します。

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

[in] dwNewLong

型: LONG

置換値。

戻り値

型: DWORD

関数が成功した場合、戻り値は指定された 32 ビット整数の前の値になります。 値が以前に設定されていない場合、戻り値は 0 になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

SetClassLong 関数と GCL_WNDPROC インデックスを使用してウィンドウ プロシージャを置き換える場合、ウィンドウ プロシージャは WindowProc コールバック関数の説明で指定されたガイドラインに準拠している必要があります。

GCL_WNDPROC インデックスを使用して SetClassLong を呼び出すと、その後 クラスで作成されたすべてのウィンドウに影響を与えるウィンドウ クラスのサブクラスが作成されます。 アプリケーションはシステム クラスをサブクラス化できますが、別のプロセスによって作成されたウィンドウ クラスをサブクラス化することはできません。

RegisterClassEx 関数で使用される WNDCLASSEX 構造体の cbClsExtra メンバーに 0 以外の値を指定して、追加のクラス メモリを予約します。

SetClassLong 関数は注意して使用してください。 たとえば、 SetClassLong を使用してクラスの背景色を変更することはできますが、この変更によって、 クラスに属するすべてのウィンドウが直ちに再描画されるわけではありません。

例については、「 アイコンの表示」を参照してください。

注意

winuser.h ヘッダーは、SetClassLong をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll
API セット ext-ms-win-ntuser-windowclass-l1-1-2 (Windows 10 バージョン 10.0.10240 で導入)

関連項目

概念

GetClassLong

参照

RegisterClassEx

SetClassLongPtr

SetWindowLong

WNDCLASSEX

ウィンドウ クラス

WindowProc