class CTest : public CWindowImpl<CTest>, public CBufferImpl<CTest> { public: BEGIN_MSG_MAP(CTest) CHAIN_MSG_MAP(CDoubleBufferImpl<CTest>) END_MSG_MAP() void DoPaint(CDCHandle dc) { CRect rect; GetClientRect(rect); CBrush cBrushBK; cBrushBK.CreateSolidBrush(RGB(255,255,255)); dc.FillRect(rect, cBrushBK); rect.top += 5; rect.left += 5; rect.right = rect.left + 30; rect.bottom = rect.top + 30; CBrush cBrush; cBrush.CreateSolidBrush(RGB(0,0,0)); dc.FillRect(rect, cBrush); dc.SetTextColor(RGB(255,0,0)); dc.SetBkMode(TRANSPARENT); CFont cFont; LOGFONTW FontInfo = {0}; FontInfo.lfWidth = 30 / 2 - 1; FontInfo.lfHeight = 30; FontInfo.lfWeight = FW_MEDIUM; //FontInfo.lfCharSet = DEFAULT_CHARSET; //FontInfo.lfPitchAndFamily = DEFAULT_PITCH | FF_SWISS; swprintf_s(FontInfo.lfFaceName, 32, _T("Consolas")); cFont.CreateFontIndirect(&FontInfo); dc.SelectFont(cFont); dc.ExtTextOutW(rect.left, rect.top, ETO_CLIPPED, rect, _T("渋")); rect.right = rect.left + 20; dc.SetTextColor(RGB(0,255,0)); dc.ExtTextOutW(rect.left, rect.top, ETO_CLIPPED, rect,_T("渋")); rect.right = rect.left + 10; dc.SetTextColor(RGB(0,0,255)); dc.ExtTextOutW(rect.left, rect.top, ETO_CLIPPED, rect, _T("渋")); } };