// WM_PAINTメッセージハンドラ
void OnPaint(HDC /*hDC*/){
CPaintDC dc(m_hWnd);
CRect rect;
GetClientRect(rect);
// サイズ20ポイントの"Arial Black"フォントを作成し、選択
CFont font;
font.CreatePointFont(200, _T("Arial Black"));
HFONT hOldFont = dc.SelectFont(font);
// パスを作成
dc.BeginPath();
dc.DrawText(_T("Hello, ATL/WTL"), -1,
rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
dc.EndPath();
// 元のフォントを選択
dc.SelectFont(hOldFont);
CRgn rgn1;
rgn1.CreateFromPath(dc);
CRgn rgn2;
rgn2.CreateRectRgnIndirect(rect);
// リージョンを合成
rgn1.CombineRgn(rgn1, rgn2, RGN_XOR);
// リージョンをクリッピング領域として選択
dc.SelectClipRgn(rgn1);
// 太さ1で緑の実線のペンを作成し、選択
CPen pen;
pen.CreatePen(PS_SOLID, 1, RGB(0, 128, 0));
HPEN hOldPen = dc.SelectPen(pen);
// しま模様を描画
for(int i=0; i<rect.bottom; i+=2){
dc.MoveTo(0, i);
dc.LineTo(rect.right, i);
}
// 元のペンを選択
dc.SelectPen(hOldPen);
}
|