ウィンドウの特徴について
ウィンドウの特徴 (traits) クラスには、ATL ウィンドウ オブジェクトを作成するために使用するスタイルを簡単に標準化する方法が用意されています。 ウィンドウの特徴クラスは、既定のウィンドウ スタイルをクラス レベルで指定するために、CWindowImpl およびその他の ATL ウィンドウ クラスで使用されるテンプレート パラメーターです。
ウィンドウのインスタンスの作成者が Create を呼び出すときにスタイルを明示的に指定しない場合は、特徴クラスを使用すると、適切なスタイルのウィンドウが作成されます。 特定のスタイルをそのウィンドウ クラスのすべてのインスタンスに設定し、ほかのスタイルをインスタンスごとに設定することもできます。
ATL のウィンドウ特徴テンプレート
ATL には 2 つのウィンドウ特徴テンプレートがあり、テンプレート パラメーターを使用してコンパイル時に既定のスタイルを設定できます。
Class |
説明 |
---|---|
このテンプレートは、既定のウィンドウ スタイルを指定する場合に使用します。このスタイルは、Create の呼び出し時にほかのスタイルが指定されていない場合に使用されます。 実行時に指定されたスタイルは、コンパイル時に設定されたスタイルよりも優先されます。 |
|
このクラスは、ウィンドウ クラスに常時設定するスタイルを指定する場合に使用します。 実行時に指定されたスタイルとコンパイル時に設定されたスタイルは、ビットごとの OR 演算子を使用して組み合わされます。 |
これらのテンプレートのほかによく使用されるウィンドウ スタイルの組み合わせについて、ATL には、CWinTraits テンプレートから特化したクラスが数多く定義されています。 詳細については、「CWinTraits」の説明を参照してください。
カスタムのウィンドウ特徴クラス
専門に ATL によって提供されるテンプレートの 1 つで十分ではない可能性は低い状況の特徴クラスを作成する必要があります、ちょうど 2 つの静的関数を実装するクラスを作成する必要があります。GetWndStyle・GetWndStyleEx:
static DWORD GetWndStyle(DWORD dwStyle);
static DWORD GetWndExStyle(DWORD dwExStyle);
これらの各関数は、実行時にスタイル値を受け取り、その値を使用して新しいスタイル値を生成します。 作成したウィンドウ特徴クラスを ATL ウィンドウ クラスのテンプレート引数として使用する場合、静的関数に渡されるスタイル値は、Create に渡されるスタイル引数として使用されます。