cocos creator 编译 Windows应用 全屏后会有很大部分是黑色的需要切换窗口才能真正全屏

我遇到了和你一样的问题,先是看别人帖子说的改几处cpp代码,发现main.cpp里 AppDelegate app(2559, 1439)里如果填写的是当前显示器用微信截图量出来的宽高,那么程序运行后就刚刚好,尝试过按照:
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);
这种获取分辨率的方式,但其实并不是实际的显示器的尺寸,所以还是不行

找到原因和办法了,是因为当前的win10在“显示设置”里更改了“缩放与布局”,于是遇到了这些问题,
办法就是不用GetSystemMetrics(),另外想办法计算出显示器的原始尺寸:
已下是要修改的main.cpp代码:

#include "main.h"
#include "AppDelegate.h"

USING_NS_CC;

// uncomment below line, open debug console
// #define USE_WIN32_CONSOLE

int APIENTRY _tWinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPTSTR    lpCmdLine,
                       int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

#ifdef USE_WIN32_CONSOLE
    AllocConsole();
    freopen("CONIN$", "r", stdin);
    freopen("CONOUT$", "w", stdout);
    freopen("CONOUT$", "w", stderr);
#endif

    // create the application instance
	//by jd, get the real screen size in windows

	//以下的cx,cy不通用,在设置了win10的屏幕缩放之后,下面2个参数是缩放之后的分辨率,不是原始的分辨率(物理宽度与高度)
	//int  cx = GetSystemMetrics(SM_CXSCREEN);
	//int  cy = GetSystemMetrics(SM_CYSCREEN);

	HWND hWnd = GetDesktopWindow();
	HMONITOR hMonitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);

	// 获取监视器逻辑宽度与高度
	MONITORINFOEX miex;
	miex.cbSize = sizeof(miex);
	GetMonitorInfo(hMonitor, &miex);
	int cxLogical = (miex.rcMonitor.right - miex.rcMonitor.left);
	int cyLogical = (miex.rcMonitor.bottom - miex.rcMonitor.top);

	// 获取监视器物理宽度与高度
	DEVMODE dm;
	dm.dmSize = sizeof(dm);
	dm.dmDriverExtra = 0;
	EnumDisplaySettings(miex.szDevice, ENUM_CURRENT_SETTINGS, &dm);
	int cxPhysical = dm.dmPelsWidth;
	int cyPhysical = dm.dmPelsHeight;

	// 缩放比例计算  实际上使用任何一个即可
	//double horzScale = ((double)cxPhysical / (double)cxLogical);
	//double vertScale = ((double)cyPhysical / (double)cyLogical);

    AppDelegate app(cxPhysical, cyPhysical);
    app.start();

#ifdef USE_WIN32_CONSOLE
    FreeConsole();
#endif

    return 0;
}
2赞

感谢,我已经解决问题,也是计算了缩放比解决的。

为什么我这个方案不行,我的版本是2.3.3

求解决方法