1.对话框背景
在CWinApp中的初始化函数中,在第一行添加
this->SetDialogBkColor(RGB(220,233,248));//设置对话框背景颜色
还可以定义一个CBrush的变量m_brush;然后创建新的画刷
m_brush.CreateSolidBrush(RGB(220,233,248));
然后在color控制事件中返回新的画刷即可
HBRUSH CMy_PCSCDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here // TODO: Return a different brush if the default is not desired return m_brush; }
如果返回hbr则为默认的背景,这个方法可以设置特定控件的背景
2.设置位图背景
首先加载位图到文件中然后创建位图画刷
bitmap.LoadBitmap(IDB_BITMAP1); m_brush.CreateSolidBrush(RGB(220,233,248)); m_BitBrush.CreatePatternBrush(&bitmap);
在ctlcolor中返回这个画刷即可
HBRUSH CMy_PCSCDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if (pWnd->GetDlgCtrlID() == IDC_STATIC_MESSAGE) { pDC->SelectObject(&m_fontLogo); pDC->SetBkMode(TRANSPARENT); } return m_BitBrush; // TODO: Return a different brush if the default is not desired // return hbr; }
3. 对话框全屏
添加如下代码即可实现对画框全屏,但是控件的相对位置并没有变化,还需要优化
GetWindowPlacement(&m_OldWndPlacement); CRect WindowRect; GetWindowRect(&WindowRect); CRect ClientRect; RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &ClientRect); ClientToScreen(&ClientRect); //获取屏幕的分辨率 int nFullWidth=GetSystemMetrics(SM_CXSCREEN); int nFullHeight=GetSystemMetrics(SM_CYSCREEN); /*将除控制条外的客户区全屏显示到从(0,0)到(nFullWidth, nFullHeight)区域, **将(0,0)和(nFullWidth, nFullHeight)两个点外扩充原窗口和除控制条之外的 **客户区位置间的差值, 就得到全屏显示的窗口位置 */ m_FullScreenRect.left=WindowRect.left-ClientRect.left; m_FullScreenRect.top=WindowRect.top-ClientRect.top; m_FullScreenRect.right=WindowRect.right-ClientRect.right+nFullWidth; m_FullScreenRect.bottom=WindowRect.bottom-ClientRect.bottom+nFullHeight; m_bFullScreen=TRUE; //设置全屏显示标志为 TRUE //进入全屏显示状态 WINDOWPLACEMENT wndpl; wndpl.length=sizeof(WINDOWPLACEMENT); wndpl.flags=0; wndpl.showCmd=SW_SHOWNORMAL; wndpl.rcNormalPosition=m_FullScreenRect; SetWindowPlacement(&wndpl);
退出全屏
ShowWindow(SW_HIDE); SetWindowPlacement(&m_OldWndPlacement);