C ++ Win32 GUI переключатель оператора ошибка - PullRequest
1 голос
/ 13 февраля 2011

Я делаю проект Win32 GUI, используя Code :: Blocks и компилятор MinGW.В этой строке моего кода:

switch(LOWORD(WPARAM))

, который является оператором переключения, для которого была нажата кнопка меню, я получаю следующую ошибку при компиляции:

error: expected primary-expression before ')' token

Я обнаружил некоторые другие случаиэтой ошибки на других форумах программирования, но ответы не помогли в моем случае.Если вам это нужно, вот код, окружающий оператор switch:

case WM_COMMAND:
    switch(LOWORD(WPARAM))
    {
        case ID_HELP_ABOUT:
            MessageBox(hwnd, "--------------", "-----", MB_OK | MB_ICONINFORMATION);
        break;
    }
    break;

Текст MessageBox был заштрихован.Что означает сообщение об ошибке, и есть ли в моем коде что-либо, что я могу добавить (или удалить), чтобы предотвратить это?

Ответы [ 3 ]

5 голосов
/ 13 февраля 2011

Проблема в том, что

LOWORD(WPARAM)

Вызывает макрос LOWORD для WPARAM типа , а не для переменной типа WPARAM. Это было бы похоже на вызов

printf(char *);

Например. Чтобы исправить это, измените код так, чтобы он вызывал LOWORD для переменной WPARAM. Большинство оконных процедур называют этот wParam, поэтому вы можете попробовать

LOWORD(wParam)
4 голосов
/ 13 февраля 2011

WPARAM - это тип, а не имя переменной, вы, вероятно, имели в виду wParam или какое-то подобное имя переменной для оператора switch:

switch(LOWORD(wParam))
...
2 голосов
/ 13 февраля 2011

Я думаю, что wparam должно быть в нижнем регистре. Не могу сказать, потому что точное имя в сигнатуре функции не видно.

...