鱼C论坛

 找回密码
 立即注册
查看: 3901|回复: 4

求助啊。怎么让窗口全屏化。不是最大化。

[复制链接]
发表于 2013-10-6 10:53:46 | 显示全部楼层 |阅读模式
5鱼币
一直搞不动百度影音和其他播放器是怎样做到全屏的。不是最大化,是客户区充满屏幕。MoveWindow做不到啊。始终有一个边框。如果x 或者 y取负值时就不能够遮挡住下面的菜单栏了。而且处理WM_MAXMININFO也搞不定是不是我方法有问题。难道播放器是靠GetDC(0)获得桌面环境信息来绘图???附上我能做到的最大窗口。 QQ截图20131006105426.png

最佳答案

查看完整内容

1:一种简单方法设置窗口全屏 在窗口初始化函数OnInitDialog()中调用一下代码:2:通过设置窗口显示状态和窗口位置来使窗口全屏 在窗口类的头文件中加入如下代码:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-10-6 10:53:47 | 显示全部楼层
1:一种简单方法设置窗口全屏

在窗口初始化函数OnInitDialog()中调用一下代码:
  1. ModifyStyle(WS_CAPTION,0,0);//如果不想去掉标题栏,去掉该句。
  2.         SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0);
  3.         ShowWindow(SW_SHOWMAXIMIZED);
复制代码
2:通过设置窗口显示状态和窗口位置来使窗口全屏

在窗口类的头文件中加入如下代码:
  1. private:
  2.         void OnFullScreen();//设置窗口全屏的方法
  3.         void OnExitFullScreen();//退出窗口全屏的方法
  4.         WINDOWPLACEMENT m_OldWndPlacement;//保存旧窗口状态的结构
  5.         BOOL m_bFullScreen;//标识窗口是否全屏
  6.         CRect m_FullScreenRect;//保存窗口位置的区域

  7. 在窗口的构造函数中初始化数据:
  8.         //数据初始化
  9.         m_bFullScreen = false;

  10. //设置窗口全屏的方法
  11. void CFullScreenDlg::OnFullScreen()
  12. {
  13.         //判断窗口是否是全屏,如果不是则设置为全屏
  14.         if(!m_bFullScreen){
  15.                 //保存旧的窗口状态位置
  16.                 GetWindowPlacement(&m_OldWndPlacement);
  17.                 //获得窗口在屏幕坐标系中的位置
  18.                 CRect WindowRect;
  19.                 GetWindowRect(&WindowRect);
  20.                 //获得客户区在屏幕坐标系中的位置
  21.                 CRect ClientRect;
  22.                 RepositionBars(0,0xffff,AFX_IDW_PANE_FIRST,reposQuery,&ClientRect);
  23.                 ClientToScreen(&ClientRect);
  24.                 //获取屏幕分辨率
  25.                 int nFullWidth = GetSystemMetrics(SM_CXSCREEN);
  26.                 int nFullHeight = GetSystemMetrics(SM_CYSCREEN);
  27.                 //计算窗口全屏位置
  28.                 m_FullScreenRect.left = WindowRect.left-ClientRect.left;//大小为负的左边框宽度
  29.                 m_FullScreenRect.top = WindowRect.top-ClientRect.top;//大小为负的上边框宽度
  30.                 m_FullScreenRect.right = WindowRect.right-ClientRect.right+nFullWidth;//大小为右边框宽度和屏幕宽度之和
  31.                 m_FullScreenRect.bottom = WindowRect.bottom-ClientRect.bottom+nFullHeight;//大小为下边框宽度和屏幕高度之和
  32.                 //设置窗口状态位置结构
  33.                 WINDOWPLACEMENT wndpl;
  34.                 wndpl.length=sizeof(WINDOWPLACEMENT);
  35.                 wndpl.flags=0;
  36.                 wndpl.showCmd=SW_SHOWNORMAL;
  37.                 wndpl.rcNormalPosition=m_FullScreenRect;
  38.                 //设置窗口位置
  39.                 SetWindowPlacement(&wndpl);
  40.                 m_bFullScreen=TRUE;//将窗口全屏标识设置为TRUE
  41.         }
  42. }

  43. //退出全屏还原窗口大小
  44. void CFullScreenDlg::OnExitFullScreen()
  45. {
  46.         //判断窗口是否在全屏状态中,如果是全屏则执行下列代码
  47.         if(m_bFullScreen)
  48.         {
  49.                 ShowWindow(SW_HIDE);
  50.                 SetWindowPlacement(&m_OldWndPlacement);//还原为旧的窗口状态
  51.                 m_bFullScreen = false;//更改窗口全屏状态标识为FALSE
  52.         }
  53. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-10-6 14:54:20 | 显示全部楼层

大哥 一旦窗口原点定义为负值的话,下面的菜单栏就挡不住了。你这方法我也试过的啊。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-10-6 15:46:38 | 显示全部楼层
窗体我是真的做不到了,刚用对话框试了试可以做到全屏。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-10-8 07:12:35 | 显示全部楼层
谢谢楼主啊:loveliness::loveliness::loveliness::loveliness::loveliness:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-8 05:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表