Не до конца создается окно

Как создается окно

Как видно на картинке Окно программы создается но отсутствуют кнопки закрыть/свернуть и оно зависло. Используется WINAPI. Изначально все работало и окно создавалось но мне нужно это вынести в отдельный класс и тогда оно перестало работать хотя код по факту тотже.

Код: main.cpp

#include "Linker.h"
#include "Windowed.h"


int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow)
{

    Windowed *wind = new Windowed(hInstance, L"ClassName");
    wind->CreateWin(L"title", 100, 50, 1200, 800);
    ShowWindow(wind->descriptor, nCmdShow);
    UpdateWindow(wind->descriptor);

    
    while (wind->msg.message != WM_QUIT)
    {
        if (PeekMessage(&wind->msg, NULL, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&wind->msg);
            DispatchMessage(&wind->msg);
        }
    }
    return 0;
}

Код: Windowed.h

#pragma once
#include "Linker.h"

class Windowed
{
public:
    Windowed(HINSTANCE, LPCWSTR);
    static LRESULT _stdcall WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

    WNDCLASS windowClass = { 0 };
    HWND descriptor;
    HINSTANCE hInstance;
    MSG msg = {};

    void CreateWin(LPCWSTR, int, int, int, int);

};

Код: Windowed.cpp

#include "Windowed.h"

Windowed::Windowed(HINSTANCE hInstance, LPCWSTR className)
{
    this->hInstance = hInstance;
    this->windowClass.lpfnWndProc = this->WindowProc;
    this->windowClass.hInstance = hInstance;
    this->windowClass.lpszClassName = className;
    RegisterClass(&this->windowClass);
}

LRESULT Windowed::WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
}

void Windowed::CreateWin(LPCWSTR title, int x, int y, int w, int h)
{
    this->descriptor = CreateWindow(
        this->windowClass.lpszClassName,
        title,
        WS_OVERLAPPED,
        x, y, w, h,
        nullptr, nullptr,
        this->hInstance,
        nullptr);
}

В linker.h просто подключена windows.h


Ответы (1 шт):

Автор решения: Albion Muz

Как говорил @こきん "Замените this->WindowProc, на Windowed::WindowProc, и ещё WS_OVERLAPPEDWINDOW вместо WS_OVERLAPPED" и это помогло. Да благословит его Бьёрн Страуструп.

→ Ссылка