Компилятор не может найти структуры, что я должен включать
-
18-09-2019 - |
Вопрос
Обновить:Я думал, что мне нужно включить Windsows.h, и вы подтвердили это, но когда я включаю его, я получаю кучу сообщений, подобных следующему...
1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5934) : error C2872: 'IDataObject' : ambiguous symbol
1> could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(251) : System::Windows::Forms::IDataObject IDataObject'
1> or 'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject
Я не знаю, как это исправить, эйк!
Я пытаюсь вызвать PeekMessage, но когда я пытаюсь скомпилировать, я получаю следующие ошибки.
"Глутамат натрия" :необъявленный идентификатор 'HWND' :необъявленный идентификатор 'PM_REMOVE' :необъявленный идентификатор
мой код выглядит следующим образом...
MSG message;
while(form->Created)
{
while( PeekMessage( &message, (HWND)form->Handle.ToPointer(), 0, 0, PM_REMOVE ) )
{
TranslateMessage( &message );
DispatchMessage( &message );
if( !mainWindow->Created )
break;
}
}
Я знаю, что это за структуры, но могу заставить компилятор распознать их.Мне не хватает ссылки или для этого есть псевдоним VC ++?
Ваше здоровье.
Решение
Вы получите несколько неприятных коллизий имен символов при # включении Windows.h в приложении Windows Forms на C ++ / CLI.Но это самоиндуцировано.Накачка вашего собственного цикла сообщений в приложении WF - это не уместно.У него уже есть один, Application::Run().Вы не можете написать свое собственное, вы не сможете соответствующим образом предварительно обработать сообщение, чтобы заставить работать такие вещи, как сочетания клавиш.
Прежде чем попробовать это, ознакомьтесь с некоторыми руководствами по программированию на C ++ / CLI.
Другие советы
Вам необходимо включить заголовочный файл, содержащий эти определения.От http://msdn.microsoft.com/en-us/library/ms644943%28VS.85%29.aspx :
Объявленный в Winuser.h, включает Windows.h
Итак, просто сделай это:
#include <Windows.h>