本人使用的cocos2dx版本为cocos2d-x_v2.1.5b,之前查到一些解决全屏的办法,但是这些方法对新版本已经不再适用,经过辛苦查询,总算是皇天不负有心人,找到了新版本的解决办法。参考原文:http://www.cocos2d-x.org/forums/6/topics/24432
方法如下:(亲测可行)
1、在目录cocos2dx\platform\win32下找到CCEGLView.h和CCEGLView.cpp,用记事本打开,在CCEGLView.h中添加如下代码
- bool enterFullscreen(int fullscreenWidth=0, int fullscreenHeight=0);
- bool exitFullscreen(int windowX, int windowY, int windowedWidth, int windowedHeight, int windowedPaddingX, int windowedPaddingY);
- int getFullscreenWidth();
- int getFullscreenHeight();
2、在CCEGLView.cpp中添加如下代码
- int CCEGLView::getFullscreenWidth()
- {
- return GetDeviceCaps(m_hDC, HORZRES);
- }
- int CCEGLView::getFullscreenHeight()
- {
- return GetDeviceCaps(m_hDC, VERTRES);
- }
- bool CCEGLView::enterFullscreen(int fullscreenWidth, int fullscreenHeight)
- {
- DEVMODE fullscreenSettings;
- bool isChangeSuccessful;
- if(fullscreenWidth == 0 || fullscreenHeight == 0)
- {
- fullscreenWidth = GetDeviceCaps(m_hDC, HORZRES);
- fullscreenHeight = GetDeviceCaps(m_hDC, VERTRES);
- }
- int colourBits = GetDeviceCaps(m_hDC, BITSPIXEL);
- int refreshRate = GetDeviceCaps(m_hDC, VREFRESH);
- EnumDisplaySettings(NULL, 0, &fullscreenSettings);
- fullscreenSettings.dmPelsWidth = fullscreenWidth;
- fullscreenSettings.dmPelsHeight = fullscreenHeight;
- fullscreenSettings.dmBitsPerPel = colourBits;
- fullscreenSettings.dmDisplayFrequency = refreshRate;
- fullscreenSettings.dmFields = DM_PELSWIDTH |
- DM_PELSHEIGHT |
- DM_BITSPERPEL |
- DM_DISPLAYFREQUENCY;
- SetWindowLongPtr(m_hWnd, GWL_EXSTYLE, WS_EX_APPWINDOW | WS_EX_TOPMOST);
- SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_POPUP | WS_VISIBLE);
- SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, fullscreenWidth, fullscreenHeight, SWP_SHOWWINDOW);
- isChangeSuccessful = ChangeDisplaySettings(&fullscreenSettings, CDS_FULLSCREEN) == DISP_CHANGE_SUCCESSFUL;
- ShowWindow(m_hWnd, SW_MAXIMIZE);
- resize(fullscreenWidth, fullscreenHeight);
- return isChangeSuccessful;
- }
- bool CCEGLView::exitFullscreen(int windowX, int windowY, int windowedWidth, int windowedHeight, int windowedPaddingX, int windowedPaddingY)
- {
- bool isChangeSuccessful;
- SetWindowLongPtr(m_hWnd, GWL_EXSTYLE, WS_EX_LEFT);
- SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW | WS_VISIBLE);
- isChangeSuccessful = ChangeDisplaySettings(NULL, CDS_RESET) == DISP_CHANGE_SUCCESSFUL;
- SetWindowPos(m_hWnd, HWND_NOTOPMOST, windowX, windowY, windowedWidth + windowedPaddingX, windowedHeight + windowedPaddingY, SWP_SHOWWINDOW);
- ShowWindow(m_hWnd, SW_RESTORE);
- return isChangeSuccessful;
- }
3、如何使用
在main.cpp中添加
- // Create the application instance
- AppDelegate app;
- CCEGLView* eglView = CCEGLView::sharedOpenGLView();
- // Set the frame size to the full screen value
- //eglView->setFrameSize(eglView->getFullscreenWidth(), eglView->getFullscreenHeight());
- eglView->enterFullscreen(0, 0);
- int ret = CCApplication::sharedApplication()->run();
这样就能够实现全屏了!