|
|||||
|
|||||
|
||||||
WTLではGDIオブジェクトのペンをCPenTというテンプレートクラスでカプセル化しています。
テンプレート引数はbool値で、trueの場合はデストラクタでDeleteObject()を呼び出し、
falseの場合は呼び出しません。atlgdi.hヘッダではtypedefによって次のように宣言されています。
WTLの CPenクラスは、MFCの同名のクラスとほぼ同じメンバ関数を用意しています。
以下に示すのは、CPenクラスを使用してクライアント矩形に接する青い円を描画する例です。![]()
この例では、まずペンオブジェクトを作成し、 それを SelectPen()で現在のペンとして選択しています。
SelectPen()は引数にHPEN型の変数を受け取りますが、
CPenTクラスはHPEN変換演算子を持っているのでそのまま渡すことができます。
SelectPen()は以前のペンハンドルを返すので、
これをhOldPenという変数に保存しておきます。次に、円を描画します。太さが 2 で青い実線の円が描画されます。 最後に、先ほど保存しておいた元のペンハンドルに戻すため、 再度 SelectPen()を呼び出して元のペンハンドルを選択します。ところで、WTLはストックペンもサポートしています。 以下に示すのは、ストックペンによって黒い実線の円を描画する例です。
また、atlmisc.hヘッダに定義されている AtlGetStockPen()というグローバル関数を使えば、
ストックペンのハンドルを取得することができます。
|