在Windows下让游戏窗口全屏

UE5 Windows打包必看:如何用蓝图精准控制游戏分辨率(附全屏/窗口化设置技巧) 本文详细介绍了在UE5中通过蓝图系统精准控制Windows平台游戏分辨率的方法,包括全屏窗口化设置的技巧。重点解析了`SetFullscreenMode`和`SetScreenResolution`等核心蓝图节点的使用,提供了不同场景下的最佳实践方案,帮助开发者优化玩家体验并解决常见问题。 阅读详情

原文地址:http://www.eoeandroid.com/thread-250863-1-1.html


參考了一下NeHe 的教程, 在 cocos2d-x 2.0 上可以做點小手腳在 Windows 上全屏顯示!
主要修改兩個檔案:

CCEGLView.h
CCEGLView.cpp
它們在工程里的位置是 libcocos2d->platform->win32
先打開 CCEGLView.h

在 public: 底下加上一個新功能:

void setFullScreen(bool flag);

另外在  private: 里加上一個新變數:

bool m_bFullScreen;

接下來是 CCEGLView.cpp:

在 Constructor 加上 m_bFullScreen 的初始值:

CCEGLView::CCEGLView(): m_bCaptured(false), m_hWnd(NULL), m_hDC(NULL), m_hRC(NULL), m_lpfnAccelerometerKeyHook(NULL), m_bFullScreen(false)

再加上我們的 setFullScreen():

void CCEGLView::setFullScreen(bool flag)
{    
    m_bFullScreen = flag;
}
然後在 Create() 里, 把CreateWindowEx() 那段改成下邊這樣:

  1. /////////////// FULLSCREEN HACK - BEGIN
  2. DWORD dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;  // Window Extended Style
  3. DWORD dwStyle = WS_CAPTION | WS_POPUPWINDOW | WS_MINIMIZEBOX;  // Window Style
  4. if (m_bFullScreen)
  5. {
  6.         DEVMODE dmScreenSettings; // Device Mode
  7.         memset(&dmScreenSettings,0,sizeof(dmScreenSettings)); // Makes Sure Memory's Cleared
  8.         dmScreenSettings.dmSize=sizeof(dmScreenSettings); // Size Of The Devmode Structure
  9.         dmScreenSettings.dmPelsWidth = w;  // Selected Screen Width
  10.         dmScreenSettings.dmPelsHeight = h;  // Selected Screen Height
  11.         dmScreenSettings.dmBitsPerPel = 32;  // Selected Bits Per Pixel
  12.         dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
  13.         // Try To Set Selected Mode And Get Results.  NOTE: CDS_FULLSCREEN Gets Rid Of Start Bar.
  14.         if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
  15.         {
  16.                 // If The Mode Fails, Offer Two Options.  Quit Or Use Windowed Mode.
  17.                 if (MessageBox(NULL, L"The Requested Fullscreen Mode Is Not Supported BynYour Video Card. Use Windowed Mode Instead?",L"cocos2d-x",MB_YESNO|MB_ICONEXCLAMATION)==IDYES)
  18.                 {
  19.                         setFullScreen(false);  // back to windowed mode
  20.                 }
  21.                 else
  22.                 {
  23.                         // Pop Up A Message Box Letting User Know The Program Is Closing.
  24.                         MessageBox(NULL,L"Program Will Now Close.",L"ERROR",MB_OK|MB_ICONSTOP);
  25.                         return FALSE;    // Return FALSE
  26.                 }
  27.         }
  28.         else        // yeah! we are in fullscreen
  29.         {
  30.                 dwExStyle = WS_EX_APPWINDOW;
  31.                 dwStyle=WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;                                                                                
  32.                                 
  33.                 //ShowCursor(FALSE);
  34.                 RECT rect;
  35.                 rect.left=(long)0;   // Set Left Value To 0
  36.                 rect.right=(long)w;  // Set Right Value To Requested Width
  37.                 rect.top=(long)0;  // Set Top Value To 0
  38.                 rect.bottom=(long)h;  // Set Bottom Value To Requested Height
  39.                 AdjustWindowRectEx(&rect, dwStyle, FALSE, dwExStyle);  // Adjust To True Requested Size
  40.         }
  41. }
  42. /////////////// FULLSCREEN HACK - END
  43. // create window
  44. m_hWnd = CreateWindowEx(
  45.     dwExStyle,                   // Extended Style For The Window
  46.     kWindowClassName,    // Class Name
  47.     wszBuf,                        // Window Title
  48.     dwStyle,                     // Defined Window Style
  49.     0, 0,                           // Window Position
  50.     0,                               // Window Width
  51.     0,                               // Window Height
  52.     NULL,                         // No Parent Window
  53.     NULL,                         // No Menu
  54.     hInstance,                  // Instance
  55.     NULL );
  56. CC_BREAK_IF(! m_hWnd);

基本上這樣已搞定.

最後在我們自己項目的 main.cpp 里選擇全屏即可:

    AppDelegate app;
    CCEGLView& eglView = CCEGLView::sharedOpenGLView();
        eglView.setFullScreen(true);
    eglView.setViewName("Hello Tests");
    eglView.setFrameSize(1920, 1080);

要注意事項:

- eglView.setFullScreen(true) 一定要在 eglView.setViewName("xxx") 前面.
- eglView.setFrameSize(1920, 1080) 設定的大小, 一定要是顯卡可以支持的.
- 不能再用CCDirector::sharedDirector()->enableRetinaDisplay(true)

Unity游戏开发:Windows平台强制锁定窗口宽高比与全屏适配方案 游戏开发中,分辨率与宽高比管理是确保视觉一致性和用户体验的基础技术。其核心原理是通过实时监控窗口尺寸变化,动态计算并应用符合预设比例的分辨率,从而避免画面拉伸或UI变形。这一技术对于横版卷轴、策略战棋等注重画面构图的游戏类型尤为重要,它能保障游戏的核心视觉呈现和UI交互稳定性。在Unity引擎中,开发者通常需要处理窗口模式下的自由拖拽和全屏模式下的适配问题。通过C#脚本结合Screen.SetResolution API,可以实现智能的窗口比例锁定,其中涉及Update轮询优化、用户拖拽行为判断以及全屏 阅读详情

相关推荐

Unity独立游戏开发:如何用C#脚本在Windows平台强制锁定游戏窗口宽高比(含全屏适配)

本文详细介绍了在Unity独立游戏开发中,如何通过C#脚本与Windows API交互,强制锁定游戏窗口宽高比并适配全屏模式。从WinAPI底层实现到全屏智能适配,提供完整解决方案,确保游戏画面比例一致,提升专业度。适用于Windows平台的Unity开发者。

weixin_31881651的博客 581

Win7游戏全屏

windows7游戏全屏,通过导入注册表修改windows7游戏全屏 .

用c++实现把全屏幕化的游戏改成窗口

在使用此代码之前,请确保你已经有足够的权限来修改游戏窗口的样式,因为某些游戏可能会限制这些操作来保护游戏体验。此外,一些游戏可能使用DirectX或其他图形API的全屏模式,这种情况下,仅仅通过修改窗口样式可能无法实现窗口化。在这种情况下,可能需要更复杂的方法,如模拟按键发送Alt+Enter命令(全屏/窗口化切换的通常快捷键),或者使用游戏特定的配置文件和设置来实现窗口化。请注意,这种方法可能不适用于所有游戏,因为一些游戏可能使用特殊的全屏模式或有防止此类修改的措施。来修改窗口的样式,以及。

r081r096的博客 1230

VC 可以使游戏全屏运行的代码

游戏运行都是以非全屏状态运行,这个程序可以游戏以绝对全屏状态运行

cocos2d-x应用窗口相关源码剖析5-其他细节

Cocos2d-x 的“HelloWorld” 细节分析   打开 HelloWorld 工程 , 里面有两个文件目录 Classes 和 win32 。 Classes 下有 HelloWorldScene.h/cpp ,AppDelegate.h/cpp. win32 下有 main.h/cpp 首先看一下 win32 目录下的 main.h, 其中定义了使用

bombing的专栏 953

COCOS2D-X源码分析之初始化游戏

#include "cocos2d.h" /**  CCEGLView  自适应模块业务 **/ #include "CCEGLView.h" #include "AppDelegate.h" #include "HelloWorldScene.h" #include "SimpleAudioEngine.h" /** @see 委托类 **/ using namespace

杰深的个人博客 837

html游戏全屏代码,HTML5全屏(Fullscreen)API详细介绍

在越来越真实的web应用程序中,JavaScript也变得越来越给力.FullScreen API 是一个新的JavaScript API,简单而又强大. FullScreen 让我们可以通过编程的方式来向用户请求全屏显示,如果交互完成,随时可以退出全屏状态.(在此Demo中,可以Launch ,Hide ,以及Dump显示相关属性,可以通过chrome的控制台查看日志信息.)启动全屏模式全屏AP...

weixin_34382015的博客 451

【Unity游戏开发基础】如何通过游戏菜单控制游戏全屏显示

其中Screen是游戏本身的对象,fullScreen是Screen的属性,这个函数其实什么都没做,就是通过传参isFullscreen,来设置Screen的fullScreen属性,实现控制游戏是否全屏显示。和其他应用一样,脚本函数代表一个行为,要触发这个行为需要用户的动作。...

每日出拳老爷子的博客 1631

基础2 win 32 Helloworld

来自:http://wangjunle23.blog.163.com/blog/static/1178381712012113075040878/ 博主注:如果想详细学习一下cocos2d-x,建议学习一下它的祖先:cocos2d《Learn IPhone and IPad cocos2d Game Development》 为什么要定义windows平台

qqGeQi的专栏 636

qt 全屏窗口有边框_如何在全屏无边框窗口模式下玩任何Windows游戏

qt 全屏窗口有边框If you’re a regular PC gamer, you know that playing a game in full screen mode can sometimes be a frustrating experience. Switching to a background program, using a second monitor, or sudden...

culiyuan8310的博客 1453

游戏后台 CPU 占用高与全屏切换最小化问题排查指南

本文针对Windows平台3D游戏常见的两个问题提供解决方案:后台CPU占用高和全屏切换最小化。对于高CPU占用,建议启用垂直同步或限制帧率至60FPS以下,关闭后台程序,并调整系统电源模式。全屏切换最小化问题可通过改用无边框窗口模式解决,同时建议更新显卡驱动和关闭可能抢占焦点的软件。这些优化措施能有效提升游戏运行效率和使用体验。

wdfk-prog.space 1803

dshow windowed mode

dshow里面的windowed mode 其实就是把graphedt弹出的框框以windowed mode的方式嵌入到mfc的对话框中

3D游戏全屏模式下显示输入法

这是一个可在D3D9画面内显示ime输入法窗口的演示程序,目前支持搜狗拼音及QQ拼音,你可以在此程序基础上继续扩展支持的输入法。打开demo后在按alt+enter可切换全屏,画面中间有输入框可测试效果。

SRWE 窗口编辑器:不重启游戏,实时把窗口改成高清分辨率与伪全屏

SRWE(Simple Runtime Window Editor)是一款免费开源的 Windows 窗口编辑器,能在程序运行中直接改写它窗口的尺寸、位置和外观。本文带你完整走一遍免重启改分辨率、游戏高清截图、一键切换配置文件的用法,并附上常见误操作的解法。 ## 先判断它适不适合你 先给结论:如果你想"不重启改分辨率""窗口模式下出高清截图""窗口铺满屏幕但保留任务栏",SRWE 就是干这个

gitblog_00770的博客 160

Unity独立游戏开发:用C#脚本实现Windows窗口比例锁定(含全屏黑边处理)

本文详细介绍了在Unity独立游戏开发中如何通过C#脚本实现Windows窗口比例锁定及全屏黑边处理。从Windows API交互到美术适配策略,提供了一套完整的解决方案,确保游戏画面在不同显示设备上保持视觉风格一致性和设计可控性。特别适合需要固定画面比例的复古像素风或电影化叙事游戏开发。

weixin_29001655的博客 215

Borderless Gaming:3分钟让你的游戏窗口告别黑屏延迟

还在为全屏游戏切换时的黑屏等待而烦恼吗?Borderless Gaming 这款开源工具能彻底解决你的困扰。通过创新的"伪全屏"技术,它让窗口游戏拥有全屏的视觉体验,同时保持窗口模式的快速切换优势。 ## 为什么你需要无边框游戏窗口? 传统游戏窗口模式存在三大痛点:全屏模式切换慢、窗口模式有碍眼边框、任务效率低下。Borderless Gaming 通过智能窗口管理技术,实现了视觉沉浸与操

gitblog_00499的博客 233

[Windows] Magpie (开源窗口缩放工具)

软件内置了 Lanczos、Anime4K、FSR (FidelityFX-FSR)、FSRCNNX、ACNet 等种高级缩放算法,用户可根据内容类型(如3D游戏、动漫风格图像)选择最合适的模式,有效解决游戏原生不支持全屏全屏后画面模糊、锯齿明显的问题。Magpie 是一款专为 Windows 10/11 系统设计的免费开源窗口缩放工具,其核心功能是通过高效的缩放算法和滤镜,将任意应用程序窗口(尤其是游戏窗口)强制放大至全屏显示,并在此过程中提升画面质量。

asdfhu234的博客 495

Unity独立游戏发布必备:用C#脚本搞定Windows窗口比例锁定(含全屏适配)

本文详细介绍了在Unity中如何使用C#脚本实现Windows平台窗口比例锁定与全屏适配的实战技巧。通过WinAPI深度介入窗口消息循环,开发者可以解决拖拽变形、全屏拉伸等常见问题,提升玩家体验。文章包含核心代码示例、参数配置指南及显示器测试方案,帮助独立游戏开发者完美适配不同显示环境。

weixin_31179927的博客 278
上一篇: cocos2d-x UI之技能冷却按钮
下一篇: cocos2d-x 游戏暂停界面,监听home键,返回键,Menu键 解决方案
爱在一毛钱
博客等级 码龄14年 7粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值