ウィンドウ クラス マクロ
これらのマクロによって、ウィンドウ クラス ユーティリティが定義されます。
名前 | 説明 |
---|---|
DECLARE_WND_CLASS | 新しいウィンドウ クラスの名前を指定できます。 |
DECLARE_WND_CLASS2 | (Visual Studio 2017) 新しいウィンドウ クラスの名前と、新しいクラスで使用されるウィンドウ プロシージャを含む外側のクラスの名前を指定できます。 |
DECLARE_WND_SUPERCLASS | 新しいウィンドウ クラスの基になる既存のウィンドウ クラスの名前を指定できます。 |
DECLARE_WND_CLASS_EX | クラスのパラメーターを指定できます。 |
要件
ヘッダー: atlwin.h
DECLARE_WND_CLASS
新しいウィンドウ クラスの名前を指定できます。 このマクロを ATL ActiveX コントロールのコントロール クラスに配置します。
DECLARE_WND_CLASS( WndClassName )
パラメーター
WndClassName
[in] 新しいウィンドウ クラスの名前。 NULL の場合は、ATL によってウィンドウ クラス名が生成されます。
解説
/permissive- コンパイラ オプションを使用すると、DECLARE_WND_CLASS が原因でコンパイラ エラーが発生するので、代わりに DECLARE_WND_CLASS2 を使用してください。
DECLARE_WND_CLASS を使用すると、情報が CWndClassInfo によって管理される新しいウィンドウ クラスの名前を指定できます。 DECLARE_WND_CLASS では、次の静的関数を実装することで、新しいウィンドウ クラスを定義します。
static CWndClassInfo& GetWndClassInfo();
DECLARE_WND_CLASS では、新しいウィンドウに対して次のスタイルを指定します。
CS_HREDRAW
CS_VREDRAW
CS_DBLCLKS
DECLARE_WND_CLASS では、既定のウィンドウの背景色も指定します。 独自のスタイルと背景色を指定するには、DECLARE_WND_CLASS_EX マクロを使用します。
CWindowImpl では、DECLARE_WND_CLASS マクロを使用することで、新しいウィンドウ クラスに基づいてウィンドウを作成します。 この動作をオーバーライドするには、DECLARE_WND_SUPERCLASS マクロを使用するか、GetWndClassInfo 関数の独自の実装を用意します。
ATL でのウィンドウの使用について詳しくは、「ATL ウィンドウ クラス」の記事を参照してください。
DECLARE_WND_CLASS2
(Visual Studio 2017) DECLARE_WND_CLASS に似ていますが、/permissive- オプションを使用してコンパイルする際に、依存名のエラーを回避するためのパラメーターが追加されています。
DECLARE_WND_CLASS2( WndClassName, EnclosingClass )
パラメーター
WndClassName
[in] 新しいウィンドウ クラスの名前。 NULL の場合は、ATL によってウィンドウ クラス名が生成されます。
EnclosingClass
[in] 新しいウィンドウ クラスを囲むウィンドウ クラスの名前。 Nll は指定できません。
解説
/permissive- オプションを使用する場合は、DECLARE_WND_CLASS がコンパイル エラーの原因となります。依存名が含まれているためです。 DECLARE_WND_CLASS2 では、このマクロが使用されるクラスの名前を明示的に指定する必要があります。そうすれば、/permissive- フラグの下でエラーが発生することはありません。 それ以外の場合、このマクロは DECLARE_WND_CLASS と同じです。
DECLARE_WND_SUPERCLASS
クラスのパラメーターを指定できます。 このマクロを ATL ActiveX コントロールのコントロール クラスに配置します。
DECLARE_WND_SUPERCLASS( WndClassName, OrigWndClassName )
パラメーター
WndClassName
[in] OrigWndClassName をスーパークラスにするウィンドウクラスの名前。 NULL の場合は、ATL によってウィンドウ クラス名が生成されます。
OrigWndClassName
[in] 既存のウィンドウ クラスの名前。
解説
このマクロを使用すると、既存のウィンドウ クラスをスーパークラスにするウィンドウ クラスの名前を指定できます。 スーパークラスの情報は、CWndClassInfo によって管理されます。
DECLARE_WND_SUPERCLASS では、次の静的関数を実装します。
static CWndClassInfo& GetWndClassInfo();
既定で、CWindowImpl では、新しいウィンドウ クラスに基づいてウィンドウを作成するために、DECLARE_WND_CLASS マクロが使用されます。 CWindowImpl
派生クラスで DECLARE_WND_SUPERCLASS マクロを指定すると、ウィンドウ クラスは既存のクラスに基づいて作成されますが、使用されるのは、自分のウィンドウ プロシージャです。 これはスーパークラスと呼ばれる手法です。
DECLARE_WND_CLASS および DECLARE_WND_SUPERCLASS マクロを使用することに加えて、GetWndClassInfo 関数を独自の実装でオーバーライドすることもできます。
ATL でのウィンドウの使用について詳しくは、「ATL ウィンドウ クラス」の記事を参照してください。
DECLARE_WND_CLASS_EX
新しいウィンドウ クラスの基になる既存のウィンドウ クラスの名前を指定できます。 このマクロを ATL ActiveX コントロールのコントロール クラスに配置します。
DECLARE_WND_CLASS_EX( WndClassName, style, bkgnd )
パラメーター
WndClassName
[in] 新しいウィンドウ クラスの名前。 NULL の場合は、ATL によってウィンドウ クラス名が生成されます。
スタイル
[in] ウィンドウのスタイル。
bkgnd
[in] ウィンドウの背景色。
解説
このマクロを使用すると、新しいウィンドウ クラスのクラス パラメーターを指定できます。このクラスの情報は CWndClassInfo によって管理されます。 DECLARE_WND_CLASS_EX では、次の静的関数を実装することで、新しいウィンドウ クラスを定義します。
static CWndClassInfo& GetWndClassInfo();
既定のスタイルと背景色を使用する場合は、DECLARE_WND_CLASS マクロを使用してください。 ATL でのウィンドウの使用について詳しくは、「ATL ウィンドウ クラス」の記事を参照してください。