//决定使用哪一种字体
LOGFONT lf = {0};
OpenThemeData();
if ( !IsThemeNull() )
GetThemeSysFont ( TMT_MSGBOXFONT, &lf );
else
{
NONCLIENTMETRICS ncm = { sizeof(NONCLIENTMETRICS) };
SystemParametersInfo (SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS),&ncm, false );
lf = ncm.lfMessageFont;
}
lf.lfHeight *= 3;
m_font.CreateFontIndirect ( &lf );
对话框的顶层窗口上有一个大的静态文本控件,也就是我们要绘制时间的地方。代码设置了控件的owner-draw风格,因此,我们可把所有的文本绘制代码都放在OnDrawItem()中:
//设置静态文本控件的owner-draw
m_wndTimeLabel.Attach ( GetDlgItem(IDC_CLOCK) );
m_wndTimeLabel.ModifyStyle ( SS_TYPEMASK, SS_OWNERDRAW );
最后,调用EnableThemeDialogTexture()以便对话框背景使用当前主题来绘制。
//其他初始化代码
EnableThemeDialogTexture ( ETDT_ENABLE );
//设置计时器的时间间隔为1秒,以在每个秒钟内都能更新时钟
SetTimer ( 1, 1000 );
return TRUE;
}
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/