Поток программы насоса сообщений C ++ / Win32 при входе / выходе - PullRequest
0 голосов
/ 08 марта 2020

Итак, у меня есть начальные знания C ++ (4 месяца в день, так что, может быть, немного больше, чем у новичка, но определенно новичок), и я начал смотреть на некоторые вещи, связанные с Win API, и у меня есть несколько пробелов в голове.

Я уверен, что есть много вещей, которые не так с приведенным ниже, или более эффективные способы сделать это, и это придет вовремя, но я хотел бы знать, почему, когда я перехожу через этот код, это делает, например, l oop a несколько раз через первое определение WndPro c перед передачей управления в другое место и, по-видимому, перестают когда-либо вступать в контакт с другими частями программы.

windows циклически просматривает код для проверки событий на высокой скорости, а затем перемещает управление в другое место?

Я уверен, что вы знаете, что вы можете даже исправить мой вопрос, поэтому все информация, которую вы находите, относящаяся к тому, что, я думаю, я спрашиваю здесь, ценится.

Простите за комментарии, они относятся к будущему себе;)

#include <Windows.h>
#include <string>

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) 
{
    switch (msg) 
    {
    case WM_CLOSE:
        PostQuitMessage(69);
        break;
    }

    return DefWindowProc(hWnd, msg, wParam, lParam);
}


int CALLBACK WinMain( 
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR   lpCmdLine,
    int nCmdShow)
{
    const auto CLASSNAME = "hwWindow";  

        //register window class
    WNDCLASSEX wc = {};
    wc.cbSize = sizeof(wc);
    wc.style = CS_OWNDC;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = nullptr;
    wc.hIcon = nullptr;
    wc.hCursor =nullptr;
    wc.hbrBackground = nullptr;
    wc.lpszMenuName = nullptr;
    wc.lpszClassName = CLASSNAME;
    wc.hIconSm = nullptr;
    RegisterClassEx(&wc);
        //create window instance

    HWND RyanWin = CreateWindowEx(
        0,
        CLASSNAME,
        "Hacker",
        WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU,
        1200, 1200, 640, 480,
        nullptr,
        nullptr,
        hInstance,
        nullptr);

    HWND hWnd = CreateWindowEx(
        0,
        CLASSNAME,
        "Happy HW Windows",
        WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU,
        200, 200, 640, 480,
        nullptr,
        nullptr,
        hInstance,
        nullptr);


        ShowWindow(hWnd, SW_SHOW);
        ShowWindow(RyanWin , SW_SHOW);

        MSG msg;
        BOOL gResult;

        while ((gResult = GetMessage(&msg, nullptr, 0, 0)) > 0)
        {
            TranslateMessage(&msg);

            UINT m = msg.message; 
            DispatchMessage(&msg);
        }

        if (gResult == -1) { return -1; }

        else { return msg.wParam; }


                return 0;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...