目前,我正在尝试制作一个简单的 Win32 应用程序,它可以在全屏和窗口模式之间来回切换。我正在使用Chromium 方法作为参考。我创建了一个类来处理窗口,使事情变得更简单。
我希望通过在按下 F4 键时切换全屏来实现这一点。不幸的是,样式似乎应用正确,但窗口没有调整大小或移动到正确的区域。它还会在返回到原始位置之前捕捉到屏幕的左上角片刻。出于某种原因,当我切换全屏时,窗口的输入会传递到它下面的那个。然后我必须去任务管理器杀死程序,因为我无法关闭窗口或应用程序。
我已经尝试在创建时将 HWND 的样式存储在一个类变量中(它以窗口模式开始)并使用该值为全屏窗口创建必要的样式并恢复窗口模式窗口。我还尝试GetWindowLongPtr在ToggleFullscreen调用函数时立即获取窗口样式。这两个都不起作用。
这是我的代码:
窗口处理程序
#include <Windows.h> // Win32 API
#ifndef WINDOWHANDLER
#define WINDOWHANDLER
class WindowHandler // WindowHandler
{
public:
WindowHandler(); // Constructor
void Destroy() { DestroyWindow(hwnd); } // Destroy the handler
void ToggleFullscreen(); // Toggle fullscreen
protected:
static LRESULT CALLBACK WindowProc // Window procedure
(
HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam
);
HWND hwnd; // The window
// Everything involved in fullscreen
bool fullscreen …Run Code Online (Sandbox Code Playgroud)