Компилятор не может найти структуры, что я должен включать - PullRequest
0 голосов
/ 06 января 2010

UPDATE: Я думал, что это был 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, но когда я пытаюсь скомпилировать, я получаю следующие ошибки.

'MSG': необъявленный идентификатор '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 ++ для того же?

Приветствие.

Ответы [ 2 ]

4 голосов
/ 06 января 2010

Вам необходимо включить заголовочный файл, содержащий эти определения. От http://msdn.microsoft.com/en-us/library/ms644943%28VS.85%29.aspx:

Объявлено в Winuser.h, включает Windows.h

Итак, просто сделайте это:

#include <Windows.h>
1 голос
/ 06 января 2010

Вы получите несколько неприятных конфликтов имен символов, когда #include windows.h в приложении Windows Forms на C ++ / CLI. Но это само по себе. Накачка вашей собственной петли сообщений в приложении WF не подходит. Он уже есть, Application :: Run (). Вы не можете написать свой собственный, вы не сможете должным образом обработать сообщение, чтобы заставить работать такие вещи, как сочетания клавиш.

Перед тем как попробовать это, изучите некоторые руководства по программированию на C ++ / CLI.

...