【发布时间】:2014-09-06 09:28:25
【问题描述】:
我创建了一个所有者绘制的按钮。我使用 WM_CTLCOLORBTN 消息来绘制它:
//get the text of the button
wchar_t buttonText[20];
int textLength = SendMessage((HWND)lParam,WM_GETTEXT,20,(LPARAM)buttonText);
Font FootlightMTLight(L"Footlight MT Light",20,0,false,false,false,L"Black");
SelectObject((HDC)wParam,FootlightMTLight.getWindowHandle());
TextOut((HDC)wParam,30,15,buttonText,textLength);
SetTextColor((HDC)wParam, RGB(0,0,0));
SetBkColor((HDC)wParam, RGB(229,255,229));
PatBlt((HDC)wParam,0,0,1,50,BLACKNESS); //x,y,width,height
PatBlt((HDC)wParam,269/2-1,0,1,50,BLACKNESS);
PatBlt((HDC)wParam,0,49,269/2,1,BLACKNESS);
PatBlt((HDC)wParam,0,0,269/2,1,BLACKNESS);
static HBRUSH handleToButtonBrush = CreateSolidBrush(RGB(229,255,229));
return (INT_PTR)handleToButtonBrush;
“Font”是我创建的一个对象(我用类等包装了 HFONT 句柄和 CreateFont 函数。getWindowHandle() 基本上返回 HFONT)。
按钮渲染得很好,但按下它会使文本背景变成白色。 我在网上搜索了一个原因和一个解决方案,但我没有找到一个具体的。 提前感谢!
【问题讨论】:
标签: c++ c windows winapi user-interface