网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月25日漏签0天
easyx吧 关注:10,957贴子:47,074
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 14回复贴,共1页
<<返回easyx吧
>0< 加载中...

关于制作全屏窗口的方法

  • 只看楼主
  • 收藏

  • 回复
  • hanpen11
  • 三年级
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大家都知道,很多游戏都是制作成全屏的,可能看起来效果会更好一些。之前看到有朋友提出关于窗口全屏怎么制作的问题,还有些朋友以为最大化就是全屏,我说一下我的思路吧,全屏的方法不唯一,我这个方法也许不是很好,不过比较容易想到,思路也比较明确,但是要用到一些sdk函数(其实这个没办法,必须要用,否则做不到的),可能对于只熟悉easyx的朋友稍微有点陌生,我尽量说的细一些吧。首先,要全屏,就不能显示标题栏和任务栏(当然了,状态栏和菜单都不能显示,只是我们建立简单的窗口没有这些),也就是必须让窗口的客户区占据整个屏幕,现在思路有了,下一步就要着手写代码。我们这是要修改窗口,就要先得到窗口的句柄,有了窗口句柄,我们才可以对这个窗口做手脚嘛,呵呵,easyx为我们提供了GetHWnd()这个函数,可以得到窗口句柄,具体怎么得到呢,要先创建一个句柄变量来存放我们得到的句柄,也就是这样:HWND hwnd = GetHWnd(),那么得到以后呢,很遗憾easyx库里面没有其他关于修改窗口相关的函数了,没关系,可以借助win32 sdk函数嘛,反正我们有句柄了(窗口把柄握在手),我们想对它干什么可以啦,哈哈,然后,我们先来把标题栏给拆掉吧,我们可以用SetWindowLong这个函数来拆掉标题栏,这个函数有3个参数,第一个参数就是我们窗口的句柄,第二个参数可以有很多值,他们都是宏,我们选择GWL_STYLE,他是用来表示我们要设定一个新的窗口风格,到底设定什么样的风格呢,就是第三个参数啦,我们可以把第三个参数设置为GetWindowLong(hWnd,GWL_STYLE)-WS_CAPTION,这就是一种新的风格诞生了,就是一个减掉标题栏的窗口风格,所以,这个函数如下,就是SetWindowLong(hwnd , GWL_STYLE , GetWindowLong(hwnd,GWL_STYLE)-WS_CAPTION);既然没有标题栏了,也就是只有客户区了,但是大小还不对啊,位置也不对啊,我们需要让这个客户区覆盖整个屏幕,也就是从屏幕的左上角到右下角全都是客户区,我们需要做两件事,1是让窗口的尺寸和屏幕的尺寸达成一致,2是让窗口的左上角和屏幕的左上角对齐开始绘制窗口,这样就完全覆盖了,我们可以用SetWindowPos这样一个函数,这个函数有6个参数呢,虽然多,但是不复杂,第一个参数依然是我们窗口的句柄,第二个参数是窗口的Z序,什么叫Z序呢,也就是我们通常说的几个同时打开的窗口 谁在谁前面 谁挡住了谁,这样的顺序,我们设置为HWND_TOP这样一个宏,他就是让我们的窗口始终是最前端,覆盖所有窗口,我们要全屏嘛,必须的,第三个和第四个参数是我们的窗口要显示的左上角X坐标和Y坐标,这个不用说啦,肯定是0,0啦,要和屏幕的左上角达成一致嘛,第五个和第六个参数呢,是我们窗口的宽度和高度,之前说过啦,要让我们的窗口和屏幕达成一致嘛,所有屏幕是多宽,我们的窗口就弄多宽,屏幕是多高,我们的窗口就多高,但是我们怎么知道屏幕的宽和高呢,这里又有个函数要用,就是GetSystemMetrics,这个函数就一个参数,他可以根据这个参数的不同而返回很多很多系统内部的东西,我们这里要的就是屏幕的宽和高,所以参数就设置为SM_CXSCREEN表示我们要得到屏幕的宽,SM_CXSCREEN表示我们要得到屏幕的高,也就是GetSystemMetrics(SM_CXSCREEN)和GetSystemMetrics(SM_CXSCREEN)分别会返回宽和高,一会把这两个函数分别当成参数写进SetWindowPos里面就可以啦,最后一个参数是窗口尺寸和定位的标志,我们就设置成SWP_SHOWWINDOW正常显示窗口就可以啦,复杂的我们也不弄,呵呵,现在6个参数都有啦,我们填进去吧,也就是SetWindowPos(hwnd , HWND_TOP , 0 , 0 , GetSystemMetrics(SM_CXSCREEN) , GetSystemMetrics(SM_CXSCREEN) , SWP_SHOWWINDOW);好啦,我们的工作完成啦,下面我把代码整理一下,发个整体的,其实也没几行代码,呵呵,主要为了好复制粘贴嘛,试试结果吧,希望能满意哦。
#include <graphics.h>
#include <conio.h>
void main()
{
initgraph(640, 480);
HWND hwnd = GetHWnd();
SetWindowLong(hwnd , GWL_STYLE , GetWindowLong(hwnd, GWL_STYLE) - WS_CAPTION);
SetWindowPos(hwnd , HWND_TOP , 0 , 0 , GetSystemMetrics(SM_CXSCREEN) , GetSystemMetrics(SM_CXSCREEN) , SWP_SHOWWINDOW);
getch();
closegraph();
}


  • hanpen11
  • 三年级
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不好意思,笔误了一个地方,我修正一下啊,就是GetSystemMetrics函数得到屏幕宽和高的两个参数反别是SM_CXSCREEN和SM_CYSCREEN,呵呵,我把第二个SM_CYSCREEN也写成SM_CXSCREEN,可能运行起来没什么问题,因为屏幕的宽大于高,所以窗口比屏幕更高,所以看起来没什么问题啦,不过这是小笔误,见谅~~~


2026-04-25 05:45:09
广告
不感兴趣
开通SVIP免广告
  • yangw80
  • 初三年级
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是用 windows api 的方法,不错,很强大~~


  • 自然向日葵
  • 五年级
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
牛啊


  • czc100
  • 学前班
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
好!谢谢!顶!


  • 自然向日葵
  • 五年级
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
现在可以制作全屏的游戏了!


  • 坠入迷惘的小白
  • 二年级
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
慢吧的牛人啊


  • 524504352
  • 四年级
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
把柄在手,天下我有!


2026-04-25 05:39:09
广告
不感兴趣
开通SVIP免广告
  • 蓝青霄
  • 四年级
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个不算挖坟吧,标记下,好东西明天再看


  • 路过的小元素
  • 四年级
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
全屏美。。。学习了~~


  • 编程砖家007
  • 一年级
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
试过,此法很好用。


  • z1092909114
  • 学前班
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#define M GetSystemMetrics(SM_CXSCREEN)
#define N GetSystemMetrics(SM_CYSCREEN)
void main()
{
initgarph(M,N);
getch();
closegraph();
}
你觉得这样怎么样?


  • 屑路深
  • 托儿所
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
真英雄,我让chat gpt写了很多代码都实现不了完整的全黑屏,总是下面有一条线,你这个这么短代码直接实现,真牛逼!!!!!


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 14回复贴,共1页
<<返回easyx吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示