Compiler kann nicht Strukturen finden, was soll ich darunter werden
-
18-09-2019 - |
Frage
UPDATE: Ich dachte, es war Windsows.h ich muss schließen und Sie haben dies bestätigt, aber wenn ich es beinhalten erhalte ich eine Reihe von Nachrichten wie folgt ...
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
Ich weiß nicht, wie dieses Problem zu beheben, eik!
Ich versuche PeekMessage zu nennen, aber wenn ich versuche zu kompilieren ich folgende Fehlermeldungen erhalten.
'MSG': nicht deklarierter Bezeichner 'HWND': undeclared Identifikator 'PM_REMOVE': nicht deklarierter Bezeichner
mein Code wie unten ...
MSG message;
while(form->Created)
{
while( PeekMessage( &message, (HWND)form->Handle.ToPointer(), 0, 0, PM_REMOVE ) )
{
TranslateMessage( &message );
DispatchMessage( &message );
if( !mainWindow->Created )
break;
}
}
Ich weiß, was diese Strukturen aber den Compiler sich zu erkennen bekommen. Bin ich ein ref fehlt oder gibt es VC ++ alias' für das gleiche?
Prost.
Lösung
Sie werden einige unangenehme Symbolnamen Kollisionen erhalten, wenn Sie windows.h in einer C ++ / CLI Windows Forms app # include. Aber das ist selbstinduzierte. Pumpen Sie Ihre eigene Nachricht Schleife in einem WF-App ist nicht angemessen. Es hat bereits eine Application :: Run (). Sie können Ihre eigenen nicht schreiben, werden Sie nicht die Nachricht entsprechend zu Vorprozess der Lage sein, Sachen zu machen, wie Tastenkombinationen funktionieren.
Arbeiten durch einige C ++ / CLI Programmierung Tutorials, bevor Sie versuchen, diese.
Andere Tipps
Sie müssen eine Header-Datei diese Definitionen enthalten enthalten. Aus http://msdn.microsoft.com/en -US / library / ms644943% 28VS.85% 29.aspx :
in Winuser.h erklärt, umfassen Windows.h
So, dies zu tun:
#include <Windows.h>