微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的按钮功能会执行我的 win32 项目的加载? C++

如何解决为什么我的按钮功能会执行我的 win32 项目的加载? C++

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

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,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,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 语句,因此在创建窗口时代码流“落入”您的 WM_COMMAND 处理程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。