|
发表于 2013-10-6 10:53:47
|
显示全部楼层
1:一种简单方法设置窗口全屏
在窗口初始化函数OnInitDialog()中调用一下代码:- ModifyStyle(WS_CAPTION,0,0);//如果不想去掉标题栏,去掉该句。
- SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0);
- ShowWindow(SW_SHOWMAXIMIZED);
复制代码 2:通过设置窗口显示状态和窗口位置来使窗口全屏
在窗口类的头文件中加入如下代码:- private:
- void OnFullScreen();//设置窗口全屏的方法
- void OnExitFullScreen();//退出窗口全屏的方法
- WINDOWPLACEMENT m_OldWndPlacement;//保存旧窗口状态的结构
- BOOL m_bFullScreen;//标识窗口是否全屏
- CRect m_FullScreenRect;//保存窗口位置的区域
- 在窗口的构造函数中初始化数据:
- //数据初始化
- m_bFullScreen = false;
- //设置窗口全屏的方法
- void CFullScreenDlg::OnFullScreen()
- {
- //判断窗口是否是全屏,如果不是则设置为全屏
- if(!m_bFullScreen){
- //保存旧的窗口状态位置
- 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);
- //计算窗口全屏位置
- 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;//大小为下边框宽度和屏幕高度之和
- //设置窗口状态位置结构
- WINDOWPLACEMENT wndpl;
- wndpl.length=sizeof(WINDOWPLACEMENT);
- wndpl.flags=0;
- wndpl.showCmd=SW_SHOWNORMAL;
- wndpl.rcNormalPosition=m_FullScreenRect;
- //设置窗口位置
- SetWindowPlacement(&wndpl);
- m_bFullScreen=TRUE;//将窗口全屏标识设置为TRUE
- }
- }
- //退出全屏还原窗口大小
- void CFullScreenDlg::OnExitFullScreen()
- {
- //判断窗口是否在全屏状态中,如果是全屏则执行下列代码
- if(m_bFullScreen)
- {
- ShowWindow(SW_HIDE);
- SetWindowPlacement(&m_OldWndPlacement);//还原为旧的窗口状态
- m_bFullScreen = false;//更改窗口全屏状态标识为FALSE
- }
- }
复制代码 |
|