为什么我的按钮函数会执行我的 win32 项目的 onload? C++

Why does my button function executes onload of my win32 projcet? C++

我使用 windows 库创建了一个基本的 GUI,但遇到了一个问题。 GUI 构建并执行得很好,但问题是按钮功能在实际 window 加载之前执行。我希望按钮在按下而不是加载时执行所需的功能。下面是我认为问题所在的代码。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT ps;
    HDC hdc;
    TCHAR greeting[] = _T("T3chSpl01ts Version - 1.0");

    switch (message)
    {
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
            
            TextOut(hdc,
                5, 5, 
                greeting, _tcslen(greeting));
        
            EndPaint(hWnd, &ps);
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
            break;

        case WM_CREATE:
        {
            Button = CreateWindow("Button", "Inject",
                WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 20, 20, 100, 30,
                hWnd, (HMENU)ID_INJECT, GetModuleHandle(NULL), NULL);
        }

        case WM_COMMAND:
        {
            switch (LOWORD(wParam))
            {
                case ID_INJECT:
                {
                    ::test();
                    break;
                }
            }
        }

    }
    return 0;
}

您的 WM_CREATE 处理程序缺少 break 语句,因此在创建 window 时代码流“落入”您的 WM_COMMAND 处理程序。