11.5.1 功能控制模块的界面设计及实现(1)
本工程基于对话框实现,而功能控制模块的界面用的是工程默认的主对话框,因此功能模块的设计也是基于这个对话框。
(1)为对话框拖放3个按钮,布局如图11.20所示。可以看出图11.20中对话框的标题栏被去掉了且没有边框。这需要修改该对话框的属性,属性设置如图11.21所示。
|
| 图11.20 功能控制模块界面布局 |
|
| 图11.21 对话框属性 |
将对话框的Border选为Thin,并去掉Title barx选项。为了不影响用户对其他程序的操作,将屏幕左下角、任务栏的上方作为对话框初始位置。在对话框的初始化函数中进行设置。
- 01 BOOL CScreenShotsDlg::OnInitDialog()
- 02 {
- 03 SetWindowText("截屏工具"); //窗体名称
- 04 //将窗体显示到屏幕的左下角
- 05 CRect rt;
- 06 SystemParametersInfo(SPI_GETWORKAREA, 0, &rt, 0) ;
- 07 int tastHeight = GetSystemMetrics(SM_CYSCREEN) - rt.Height();
- 08 m_swRect.left = GetSystemMetrics(SM_CXSCREEN) - 250;
- 09 m_swRect.top = GetSystemMetrics(SM_CYSCREEN) - 35 - tastHeight -5 ;
- 10 m_swRect.right = GetSystemMetrics(SM_CXSCREEN);
- 11 m_swRect.bottom = GetSystemMetrics(SM_CYSCREEN) - tastHeight -5 ;
- 12 SetWindowPos(&wndTopMost,m_swRect.left , m_swRect.top ,
- m_swRect.Width() ,
- 13 m_swRect.Height() ,SWP_SHOWWINDOW);
- 14 return TRUE;
- 15 }
SystemParametersInfo()用于函数查询或设置系统级参数。当第一个参数为SPI_GETWORKAREA时检索主显示器的工作区大小。工作区是指屏幕上不被系统任务条或应用程序桌面工具遮盖的部分。
(2)为功能控制界面设计并载入背景图片IDB_BK,如图11.22所示。
|
| 图11.22 功能控制模块的背景图片 |
为对话框类中定义两个变量,一个用于载入位图,一个用于绘制对话框背景。
- CBitmap m_bmBack;
- CBrush m_brBack;
在对话框的初始化函数中载入背景位图,并用这个位图初始化背景刷。- m_bmBack.DeleteObject();
- m_brBack.DeleteObject();
- m_bmBack.LoadBitmap(IDB_BK);
- m_brBack.CreatePatternBrush(&m_bmBack);
重载对话框的OnCtlColor()函数,实现修改对话框背景图像的功能。- 01 HBRUSH CScreenShotsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT
- nCtlColor)
- 02 {
- 03 return m_brBack; //窗体背景刷
- 03 }
直接返回用背景图片初始化的背景刷句柄即可。