SetClassLong(A)

指定されたウィンドウが属するウィンドウクラスの WNDCLASSEX 構造体のデータを書き換えます。拡張クラスメモリのデータも書き換えることができます。

この構造体は SetClassLongPtr 関数に取って代わられました。32ビット版と64ビット版の Windows で共通して利用できるコードを記述する場合には、 SetClassLongPtr 関数を使用する必要があります。

LONG SetClassLongA(
    HWND  hWnd,      // ウィンドウハンドル
    int   nIndex,    // 変更するデータの指定
    LONG  dwNewLong  // 新しい値
);

USER32.DLL

引数

hWnd

属性を変更するクラスに属しているウィンドウのハンドルを指定します。

nIndex

どの属性を変更するのかを指定します。

拡張クラスメモリの 32 ビット値を書き換えるときは、 0 から始まるオフセットをバイト単位で指定します。有効なオフセットは、 0 から (拡張クラスメモリのバイト数 -4) までです。

それ以外の WNDCLASSEX 構造体のデータを変更するときは、次のいずれかを指定します。

変更される属性
-8 (GCL_MENUNAME)

クラスに関連付けられるメニューリソースを識別するためのメニュー名文字列のアドレス、またはメニューの ID を書き換えます。

-10 (GCL_HBRBACKGROUND)

クラスに関連付けられる背景ブラシのハンドルを書き換えます。

-12 (GCL_HCURSOR)

クラスに関連付けられるマウスカーソルのハンドルを書き換えます。

-14 (GCL_HICON)

クラスに関連付けられるアイコンのハンドルを書き換えます。

-16 (GCL_HMODULE)

クラスを登録したモジュールのハンドルを書き換えます。

-18 (GCL_CBWNDEXTRA)

拡張ウィンドウメモリのサイズを、バイト単位で設定します。この値を変更しても、すでに割り当てられた拡張ウィンドウメモリのサイズは変わりません。このメモリへのアクセスは、 GetWindowLong 関数や SetWindowLong 関数で行ないます。

-20 (GCL_CBCLSEXTRA)

拡張クラスメモリのサイズを、バイト単位で設定します。この値を変更しても、すでに割り当てられた拡張メモリのサイズは変わりません。

-24 (GCL_WNDPROC)

このクラスのウィンドウプロシージャのアドレスを書き換えます。

-26 (GCL_STYLE)

ウィンドウクラスのスタイルを書き換えます。

-34 (GCL_HICONSM) クラスに関連付けられる小さいアイコンのハンドルを書き換えます。
dwNewLong

新しく設定する値を指定します。

戻り値

成功すると、変更前の値が返ります。

失敗すると 0 が返ります。拡張エラー情報を取得するには、 GetLastError 関数を使います。

取得した値が 0 だったとき、成功しても 0 が返ります。この問題を解決するには、 SetLastError 関数を引数 0 で呼び出してから、SetClassLong 関数を呼び出します。関数が失敗すると、直後に呼び出す GetLastError 関数が 0 以外の値を返します。

対応情報

Windows 95 以降 / Windows NT 3.1 以降