0

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を始めたばかりなので、非常に新しいです。事前に助けてくれてありがとう!

4

1 に答える 1

0

CreateWindowEx の 2 番目のパラメーターは、以前に RegisterClass を呼び出して登録したクラス名でなければなりません。

WS_CHILD を指定しています。しかし、子供には親がいる必要があります。親 HWND を hwndParent パラメーターに渡します。

于 2013-06-02T03:34:25.747 に答える