Переменная HWND, определенная в глобальной области видимости, нарушает компиляцию - PullRequest
0 голосов
/ 26 августа 2011

По какой-то причине, когда я объявляю свой контроль в глобальной области, мое приложение не будет компилироваться.Когда я объявляю переменную inline, все в порядке.Следующее не скомпилируется:

 //Global
    HWND hEdit;

    ...

    case WM_CREATE:
            {
                // Create an edit box
                 hEdit= CreateWindowEx(WS_EX_CLIENTEDGE,
                    "EDIT",
                    "",
                    WS_CHILD|WS_VISIBLE|
                    ES_MULTILINE|ES_AUTOVSCROLL|ES_AUTOHSCROLL,
                    50,
                    100,
                    200,
                    100,
                    hwnd,
                    (HMENU)IDC_MAIN_EDIT,
                    GetModuleHandle(NULL),
                    NULL);
                HGDIOBJ hfDefault = GetStockObject(DEFAULT_GUI_FONT);

...

}
break;

Следующее не скомпилируется.Ошибка:

'HGDIOBJ': недопустимое использование этого типа в качестве выражения

Однако, если я определю hEdit inline в моем переключателе, эта ошибка исчезнет.

Итак, это скомпилируется:

 case WM_CREATE:
        {
            // Create an edit box
            HWND hEdit= CreateWindowEx(WS_EX_CLIENTEDGE,
                "EDIT",
                "",
                WS_CHILD|WS_VISIBLE|
                ES_MULTILINE|ES_AUTOVSCROLL|ES_AUTOHSCROLL,
                50,
                100,
                200,
                100,
                hwnd,
                (HMENU)IDC_MAIN_EDIT,
                GetModuleHandle(NULL),
                NULL);
            HGDIOBJ hfDefault = GetStockObject(DEFAULT_GUI_FONT);
...

} break;

Я, должно быть, упускаю из виду что-то простое, но не могу его найти.Может кто-нибудь сказать мне, что я пропускаю?

Спасибо

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Argg ... Я назвал этот файл с .c, а не .cpp

Не уверен, почему они приведут к проблеме, с которой я столкнулся, но я заметил, что также получаю ошибку «необъявленный идентификатор». Переименование файла сделало свое дело. Я думаю, что я буду называть это ночью:)

Спасибо за комментарии и ответы.

0 голосов
/ 26 августа 2011

Является ли ваша глобальная переменная случайно объявленной перед #include?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...