ウィンドウの特性を理解する

ウィンドウの特性クラスにより、ATL ウィンドウ オブジェクトの作成に使うスタイルを標準化するためのシンプルなメソッドが提供されます。 ウィンドウの特性は、クラス レベルで既定のウィンドウ スタイルを指定する方法として、CWindowImpl および他の ATL ウィンドウ クラスによってテンプレート パラメーターとして受け入れられます。

ウィンドウ インスタンスの作成者が Create の呼び出しで明示的にスタイルを提供していない場合は、特性クラスを使用して、ウィンドウが引き続き正しいスタイルで作成されることを確保できます。 ウィンドウ クラスのすべてのインスタンスに対して特定のスタイルが設定されるようにしながら、インスタンスごとに他のスタイルも設定できるようにすることができます。

ATL ウィンドウの特性テンプレート

ATL には、コンパイル時にテンプレート パラメーターを使用して既定のスタイルを設定できる 2 つのウィンドウの特性テンプレートが用意されています。

クラス 説明
CWinTraits Create の呼び出しで他のスタイルを指定しない場合にのみ使用される、既定のウィンドウ スタイルを指定するときに、このテンプレートを使います。 実行時に指定されるスタイルは、コンパイル時に設定されるスタイルよりも優先されます。
CWinTraitsOR ウィンドウ クラスに常に設定する必要があるスタイルを指定する場合は、このクラスを使用します。 実行時に提供されるスタイルは、コンパイル時にビットごとの OR 演算子を使用して設定されたスタイルと組み合わされます。

これらのテンプレートに加えて、一般的に使用されるウィンドウ スタイルの組み合わせに対して CWinTraits テンプレートの定義済みの特殊化が ATL により多数用意されています。 詳細については、CWinTraits のリファレンス ドキュメントを参照してください。

カスタム ウィンドウの特性

ATL により提供されるテンプレートの 1 つを特殊化するだけでは不十分で、独自の特性クラスを作成する必要があるという、まれな状況では、GetWndStyleGetWndStyleEx の 2 つの静的関数を実装するクラスを作成する必要があります。

static DWORD GetWndStyle(DWORD dwStyle);
static DWORD GetWndExStyle(DWORD dwExStyle);

これらの各関数には、実行時に、新しいスタイル値を生成するために使用できるスタイル値がいくつか渡されます。 ウィンドウの特性クラスが ATL ウィンドウ クラスのテンプレート引数として使用されている場合、これらの静的関数に渡されるスタイル値は、Create にスタイル引数として渡されたものになります。

関連項目

ウィンドウ クラス