Member 13010616 Ответов: 2

Я пытаюсь получить всплывающее окно графического интерфейса. В нем говорится о непоследовательной аннотации для winmain. Как исправить этот код?


#include <windows.h>
#include <winuser.h>

LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR args, int nCmdshow) 
{
    WNDCLASSW wc;

    wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hInstance = hInst;
    wc.lpszClassName = L"myWindowClass";
    wc.lpfnWndProc = WindowProcedure;
    RegisterClass(&wc);
    return 0;
    CreateWindowW(L"myWindowClass", L"My Window", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 500, 500, NULL, NULL, NULL, NULL);
		
    return 0;
}

LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
}


Что я уже пробовал:

Я попробовал вышеприведенный код. Я пытаюсь заставить его работать.

2 Ответов

Рейтинг:
2

Rick York

Мне кажется, что у вас есть чрезмерные возвратные заявления. Увеличьте уровень предупреждения на вашем компиляторе, чтобы он сообщил вам об этом. Вы должны были получить предупреждение, потому что вызов CreateWindow недоступен.

Удалите первый оператор return 0, чтобы в конце функции был только один оператор.

-edit - это не точная причина вашей ошибки, но поиск "несогласованной аннотации winmain" даст вам много подсказок.


Рейтинг:
19

steveb

Ты забыл про цикл обработки сообщений в функции WinMain

while ( GetMessage(&msg, NULL, 0, 0) )
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
return msg.wParam;


и в вашей WindowProcedure вы забыли возвращаемое значение

return DefWindowProc(hWnd, message, wParam, lParam);


WinMain не возвращается до тех пор, пока окно не будет уничтожено