我正在开发一个CMyHeaderCtrl
从 MFC 类派生的自定义标题控件,CHeaderCtrl
并在应用程序主题化时覆盖该DrawItem
方法以进行一些自定义绘图。起初我尝试确定标题项目的主题字体,但它失败并GetThemeFont
返回结果'element not found' (0x80070490)
。
使用此控件的应用程序与 Common Controls 6 相关联。下面是一些示例代码:
void MyHeaderCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
if(IsThemeActive() && IsAppThemed() && ComCtlVersionOK())
{
if(HTHEME hTheme = OpenThemeData(m_hWnd, L"HEADER"))
{
LOGFONTW lfw;
HRESULT hr = GetThemeFont(hTheme, lpDrawItemStruct->hDC, HP_HEADERITEM, HIS_NORMAL, TMT_CAPTIONFONT, &lfw);
ASSERT(hr == S_OK);
// ...
CloseThemeData(hTheme);
}
}
}
TMT_CAPTIONFONT
我也已经尝试过除了like之外的其他属性TMT_SMALLCAPTIONFONT
,TMT_BODYFONT
等等。这里有什么问题?