第一篇:程序中如何让窗口全屏

问题描述:如何在windows程序中设置窗口程序为全屏呢?下面的例子中只使用到windows的API函数,如果你的编译环境下有类似于SDL_FULLSCREEN这样的参数可以设置,那就不用看这个例子了,当然这样的参数的设置也有失效的时候,如果出现这种情况也是可以借鉴后面的例子的。这个例子中使用的主要API函数是SetWindowPlacement,当然网络上也会介绍使用其他的方法。

 

解决描述:首先我们了解windows的窗口是如何全屏的呢?注意我说的是全屏,不是MAX_SIZE,不是窗口最大化。其实窗口全屏只需要满足两个主要条件即可:第一、窗口的工作区域的左上角与桌面的(0、0)点重合,第二、窗口的尺寸与桌面的尺寸一致。当然你的窗口也要在前端。

 

代码部分:

第一步:你需要获得窗口的句柄,如果你可以直接从外部获得,就可以跳过这一部分了。

HWND hWnd = FindWindow(NULL,L"你窗口的标题");   //通过你窗口的标题获得窗口的句柄

第二步:获得一些你的当前系统的信息(我们使用GetSystemMetrics这个API函数,这个函数可以获得很多系统信息,如果你的本例子使用失败,可以从这个函数中获得一些有用的帮助。)

int ScreenX = GetSystemMetrics(SM_CXSCREEN); //获得全屏的宽

int ScreenY = GetSystemMetrics(SM_CYSCREEN); //获得全屏的高

int DialogX = GetSystemMetrics(SM_CXDLGFRAME); //获得你的窗口左边空白边框的宽度

int DialogY = GetSystemMetrics(SM_CYDLGFRAME) + GetSystemMetrics(SM_CYCAPTION);  //获得你的窗口的上面部分空白的高度,注意这里是边框高度加上标题栏的高度

第三步:有了上面的参数你就可以做到如何让你的窗口满足全屏需要的主要条件了吧。来试一试。

 WINDOWPLACEMENT newment;
 newment.length = sizeof(WINDOWPLACEMENT);
 newment.flags = WPF_RESTORETOMAXIMIZED;
 newment.showCmd = SW_SHOWMAXIMIZED; 

 newment.ptMaxPosition.x = 0;
 newment.ptMaxPosition.y = 0;
 newment.ptMinPosition.x = 0;
 newment.ptMinPosition.y = 0;
 newment.rcNormalPosition.left = - DialogX;      //(0,0)点重合
 newment.rcNormalPosition.top = - DialogY;
 newment.rcNormalPosition.bottom = ScreenX - DialogY; //尺寸一致
 newment.rcNormalPosition.right = ScreenY - DialogX;
 SetWindowPlacement(hWnd,&newment); 

 

好了通过上面的设置,窗口就应该全屏了,希望朋友们能够补充和完善。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值