相关疑难解决方法(0)

无边框窗口和桌面尺寸相同时闪烁

我正在尝试创建一个无边框窗口,用OpenGL视口填充屏幕.问题是,当我将窗口和视口设置为与桌面大小相同时,窗口会在丢失和获得焦点,退出和创建时闪烁黑色.这可能与Windows将窗口设置为某种类型的真正"全屏"模式有关.在使用这种无边框全屏窗口的其他应用程序(DirectX?)中似乎不会发生这种情况.

我相信SFML有这个问题的变种.

有一种解决方法:不要将窗口设置为桌面的确切大小.例如,使窗口的宽度比桌面的宽度大一个像素.

下面是一个没有错误检查的SSCCE,它显示了我正在谈论的内容.这将创建一个无边框全屏窗口,桌面大小的OpenGL视口显示丑陋的绿色(退出AltF4).您可以更改仅向窗口宽度添加一个额外像素的行#define FIX_BUG 0,#define FIX_BUG 1以查看我想要的行为.

#define WIN32_LEAN_AND_MEAN
#include "windows.h"

#pragma comment(lib, "OpenGL32.lib")

#define FIX_BUG 0

void MyRegisterClass(HINSTANCE hInstance);
HWND MyCreateWindow(HINSTANCE hInstance);
void MySetupOpenGLContext(HWND hWnd);
void MySetPixelFormat(HDC hDC);
RECT MyGetDesktopRect();
void MyLoadOpenGLFunctions();

#define APIENTRYP APIENTRY *
#define GLAPI extern
#define GL_COLOR 0x1800

typedef int GLint;
typedef int GLsizei;
typedef unsigned int GLenum;
typedef float GLfloat;

typedef void (APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, …
Run Code Online (Sandbox Code Playgroud)

windows opengl winapi borderless

6
推荐指数
0
解决办法
1127
查看次数

标签 统计

borderless ×1

opengl ×1

winapi ×1

windows ×1