Компилятор не может найти структуры, что я должен включать

StackOverflow https://stackoverflow.com/questions/2009549

Вопрос

Обновить:Я думал, что мне нужно включить 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top