在WinAPI中按下按钮后创建一个窗口

Creating a Window in WinAPI after pressing a button

本文关键字:窗口 一个 创建 WinAPI 按钮      更新时间:2023-10-16

我正在为WinAPI中的游戏制作自动点击器,我在主窗口上有4个简单的按钮。当用户按下"开始"按钮时,我希望另一个窗口打开,询问他们设置,如点击次数和点击之间的时间。当我尝试创建一个新窗口时,什么也没有发生,但其他一切都工作得很好。

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_DESTROY:
        {
            PostQuitMessage(0);
            return 0;
        }
    case WM_COMMAND:
        {
            switch (wParam)
            {
            case ID_START:
                {
                    HINSTANCE hInstance = GetModuleHandle(CLASS_NAME);
                    HWND settings = CreateWindowEx(
                        0,
                        L"Settings",
                        L"Settings",
                        WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CHILD,
                        100, 100, 600, 200, 
                        NULL,
                        (HMENU) ID_SETTINGS,
                        hInstance,
                        NULL
                        );
                    MSG msg = { };
                    while (GetMessage (&msg, NULL, 0, 0))
                    {
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                    }
                    return 0;
                }
            case ID_QUIT:
                {
                    PostQuitMessage(0);
                    return 0;
                }
            case ID_CALIB:
                {
                    if (MessageBox(hwnd, L"You pressed Calibrate", L"Calibrate", MB_OK))
                    {
                        return 0;
                    }
                }
            case ID_INFO:
                {
                    if (MessageBox(hwnd, L"You pressed about", L"About", MB_OK))
                    {
                        return 0;
                    }
                }
            }
        }
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hwnd, &ps);
            FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_WINDOW+1));
            EndPaint(hwnd, &ps);
            return 0;
        }       
    }
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

我今天刚开始使用WinAPI,所以我是一个新手。提前感谢您的帮助!

CreateWindowEx的第二个参数必须是您之前通过调用RegisterClass注册的类名。

指定WS_CHILD。但孩子必须有父母。将父HWND传递给hwndParent参数