Cocos2d-x在windows下实现全屏(cocos2d-x+win32+fullScreen)

        Cocos2d-x在windows下实现全屏(cocos2d-x+win32+fullScreen)       

分类:            日志 446人阅读 评论(0) 收藏 举报

本人使用的cocos2dx版本为cocos2d-x_v2.1.5b,之前查到一些解决全屏的办法,但是这些方法对新版本已经不再适用,经过辛苦查询,总算是皇天不负有心人,找到了新版本的解决办法。参考原文:http://www.cocos2d-x.org/forums/6/topics/24432

方法如下:(亲测可行)

1、在目录cocos2dx\platform\win32下找到CCEGLView.hCCEGLView.cpp,用记事本打开,在CCEGLView.h中添加如下代码

  1. bool enterFullscreen(int fullscreenWidth=0, int fullscreenHeight=0); 
  2. bool exitFullscreen(int windowX, int windowY, int windowedWidth, int windowedHeight, int windowedPaddingX, int windowedPaddingY); 
  3. int getFullscreenWidth(); 
  4. int getFullscreenHeight(); 

2、在CCEGLView.cpp中添加如下代码

  1. int CCEGLView::getFullscreenWidth() 
  2.     return GetDeviceCaps(m_hDC, HORZRES); 
  3.  
  4. int CCEGLView::getFullscreenHeight() 
  5.     return GetDeviceCaps(m_hDC, VERTRES); 
  6.  
  7. bool CCEGLView::enterFullscreen(int fullscreenWidth, int fullscreenHeight) 
  8.     DEVMODE fullscreenSettings; 
  9.     bool isChangeSuccessful; 
  10.  
  11.     if(fullscreenWidth == 0 || fullscreenHeight == 0) 
  12.     { 
  13.         fullscreenWidth  = GetDeviceCaps(m_hDC, HORZRES); 
  14.         fullscreenHeight = GetDeviceCaps(m_hDC, VERTRES); 
  15.     } 
  16.  
  17.     int colourBits       = GetDeviceCaps(m_hDC, BITSPIXEL); 
  18.     int refreshRate      = GetDeviceCaps(m_hDC, VREFRESH); 
  19.  
  20.     EnumDisplaySettings(NULL, 0, &fullscreenSettings); 
  21.     fullscreenSettings.dmPelsWidth        = fullscreenWidth; 
  22.     fullscreenSettings.dmPelsHeight       = fullscreenHeight; 
  23.     fullscreenSettings.dmBitsPerPel       = colourBits; 
  24.     fullscreenSettings.dmDisplayFrequency = refreshRate; 
  25.     fullscreenSettings.dmFields           = DM_PELSWIDTH | 
  26.                                             DM_PELSHEIGHT | 
  27.                                             DM_BITSPERPEL | 
  28.                                             DM_DISPLAYFREQUENCY; 
  29.  
  30.     SetWindowLongPtr(m_hWnd, GWL_EXSTYLE, WS_EX_APPWINDOW | WS_EX_TOPMOST); 
  31.     SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_POPUP | WS_VISIBLE); 
  32.     SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, fullscreenWidth, fullscreenHeight, SWP_SHOWWINDOW); 
  33.     isChangeSuccessful = ChangeDisplaySettings(&fullscreenSettings, CDS_FULLSCREEN) == DISP_CHANGE_SUCCESSFUL; 
  34.     ShowWindow(m_hWnd, SW_MAXIMIZE); 
  35.  
  36.     resize(fullscreenWidth, fullscreenHeight); 
  37.  
  38.     return isChangeSuccessful; 
  39.  
  40. bool CCEGLView::exitFullscreen(int windowX, int windowY, int windowedWidth, int windowedHeight, int windowedPaddingX, int windowedPaddingY) 
  41.     bool isChangeSuccessful; 
  42.  
  43.     SetWindowLongPtr(m_hWnd, GWL_EXSTYLE, WS_EX_LEFT); 
  44.     SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW | WS_VISIBLE); 
  45.     isChangeSuccessful = ChangeDisplaySettings(NULL, CDS_RESET) == DISP_CHANGE_SUCCESSFUL; 
  46.     SetWindowPos(m_hWnd, HWND_NOTOPMOST, windowX, windowY, windowedWidth + windowedPaddingX, windowedHeight + windowedPaddingY, SWP_SHOWWINDOW); 
  47.     ShowWindow(m_hWnd, SW_RESTORE); 
  48.  
  49.     return isChangeSuccessful; 

3、如何使用

main.cpp中添加

  1. // Create the application instance 
  2.     AppDelegate app; 
  3.     CCEGLView* eglView = CCEGLView::sharedOpenGLView(); 
  4.  
  5.     // Set the frame size to the full screen value 
  6.     //eglView->setFrameSize(eglView->getFullscreenWidth(), eglView->getFullscreenHeight()); 
  7.  
  8.     eglView->enterFullscreen(0, 0); 
  9.  
  10.     int ret = CCApplication::sharedApplication()->run(); 

这样就能够实现全屏了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值