0
我有使用具有WS_BORDER风格的CreateWindowEx创建的自定义控件。除了边框以与对话框中的其他控件不同的颜色显示外,一切正常。我的控件中的边框是黑色的,其他控件有蓝色边框。我在创建控件后尝试调用EnableThemeDialogTexture(_dialogHandle,ETDT_ENABLE),以及http://www.patchou.com/projects/richedit/的逻辑,但无济于事。我使用C++和Winapi。即。没有MFC,没有.Net。任何指导非常感谢。将Windows主题应用于具有WS_BORDER风格的自定义控件
编辑:这里是为我工作的逻辑:
HDC hdc = GetWindowDC(hwnd);
HTHEME themeHandle = OpenThemeData(hwnd, L"Edit");
if(themeHandle)
{
int cxBorder = GetSystemMetrics(SM_CXBORDER);
int cyBorder = GetSystemMetrics(SM_CYBORDER);
RECT rc;
GetClientRect(hwnd, &rc);
OffsetRect(&rc, cxBorder, cyBorder);
ExcludeClipRect(hdc, rc.left, rc.top, rc.right, rc.bottom);
InflateRect(&rc, cxBorder, cyBorder);
DrawThemeBackground(themeHandle, hdc, 0, 0, &rc, NULL);
CloseThemeData(themeHandle);
}
ReleaseDC(hwnd, hdc);
感谢您的回复。现在正在工作。我已经修改了我的帖子以显示我正在使用的逻辑,以防万一它帮助别人。 – fhevol