打开毛玻璃效果
如前面一样,我们需要用黑色画刷来填充毛玻璃区域,以便营造一种透视效果。因为内置的对话框窗口处理过程会响应WM_ERASEBKGND消息,来处理诸如非矩形或半透明控件,所以,我们需要在OnPaint()而不是OnEraseBkgnd()中做绘图。
void CMainDlg::OnPaint ( HDC hdc )
{
CPaintDC dc(m_hWnd);
CRect rcGlassArea;
if ( IsCompositionEnabled() )
{
GetClientRect ( rcGlassArea );
rcGlassArea.bottom = 150;
dc.FillSolidRect(rcGlassArea, RGB(0,0,0));
}
}
绘制文本
在OnTimer()中,获取当前时间,并以此设置静态控件的文本:
void CMainDlg::OnTimer ( UINT uID, TIMERPROC pProc )
{
//获取当前时间
TCHAR szTime[64];
GetTimeFormat ( LOCALE_USER_DEFAULT, 0, NULL, NULL,szTime, _countof(szTime) );
m_wndTimeLabel.SetWindowText ( szTime )
}
SetWindowText()函数会使静态控件重绘,导致OnDrawItem()函数的调用。OnDrawItem()函数中的代码与前面框架窗口例子中的类似,在此不再赘述,以下是程序外观:
在毛玻璃效果上绘制图形
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/