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