在对话框程序中应用毛玻璃效果
在对话框程序中添加毛玻璃效果的过程,与上面框架窗口的例子非常相似,但需要对代码作一些轻微的改动。在示例对话框程序中为顶层窗口添加了毛玻璃效果,下面,相对前一例子作了修改或添加的代码,将以黑体字标出。
设置对话框
如之前一样,要告之CThemeImpl我们要使用哪个窗口类主题,并调用DwmExtendFrameIntoClientArea()为窗口边框添加毛玻璃效果。
CMainDlg::CMainDlg()
{
SetThemeClassList ( L"globals" );
}
BOOL CMainDlg::OnInitDialog ( HWND hwndFocus, LPARAM lParam )
{
//删除了向导生成的某些初始化代码
//为顶层窗口添加毛玻璃效果
if ( IsCompositionEnabled() )
{
MARGINS mar = {0};
mar.cyTopHeight = 150;
DwmExtendFrameIntoClientArea ( m_hWnd, &mar );
}
接下来,构建文本字体。注意,我们需要显式调用OpenThemeData(),而为什么在前面的框架窗口例子中不需要调用呢,因为CThemeImpl在它的WM_CREATE处理程序中已调用了。反观对话框取而代之接收WM_INITDIALOG,而CThemeImpl未处理WM_INITDIALOG,所以就需要我们自己调用OpenThemeData()了。另外,在代码中也把字体设置得更大,只是为了演示更大字体的发光效果。
文章来源于领测软件测试网 https://www.ltesting.net/