2015-10-23 5 views
3

Я начал играть с win32 api в C++, и когда я собирался сделать кнопку, intellisense говорит «define CreateWindow CreateWindowA». Когда я, кажется, паря вниз, он также говорит «Ошибка: ожидается a)».Функция C++ CreateWindow() не определена

Вот мой код:

CreateWindow(TEXT("button"), TEXT("You should press this button"), WS_VISIBLE | WS_CHILD, 50, 50, 300, 300, hWnd, (HMENU)somecrap, NULL, NULL); 

Так могли бы вы сказать мне, что именно проблема? Из поиска в Интернете люди говорили, что это имеет какое-то отношение к набору символов с препроцессором, но я не совсем уверен, что делать.

+0

Просьба внести минимальный [MCVE] (http://stackoverflow.com/help/mcve), который дает вам эту ошибку и указывает, где именно происходит эта ошибка. – chris

+5

Я бы не стал отслеживать ошибки, о которых говорит вам Intellisense, это, как известно, ненадежно. Только верьте тому, что говорит вам компилятор. –

+0

Intellisense использует другой интерфейс компилятора ([EDG] (https://www.edg.com/index.php), я полагаю) из реального компилятора. Это иногда приводит к тому, что Intellisense не соглашается с компилятором. В этом случае безопасно игнорировать Intellisense. – IInspectable

ответ

3

Название CreateWindow - макро. Реальные функции API Win32 - это 2: CreateWindowA для ANSI и CreateWindowW для Unicode. В зависимости от слова UNICODE используется один из них.

+1

Как видно из сообщения, 'CreateWindow' превращается в' CreateWindowA'. Непонятно, почему в какой-то неизвестной части кода OP ожидалось бы закрытие круглых скобок. – chris

+0

@chris Название гласит, что функция CreateWindow() не определена. Я объясню, почему чистый 'CreateWindow' не существует. – i486

+0

Ничего себе, спасибо! Я попробовал версию w, с которой он работал. Это может быть глупый вопрос, но можете ли вы указать мне на документацию, где каждая функция имеет эквивалент Unicode? – Unknownguy