2010-01-05 11 views
0

MISE À JOUR: Je pensais que c'était Windsows.hi besoin d'inclure et vous l'avez confirmé, mais quand je l'inclue, je reçois un tas de messages comme suit. ..Compilateur ne peut pas trouver des structures, que dois-je être

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 

Je ne sais pas comment résoudre ce problème, eik! J'essaye d'appeler PeekMessage mais quand j'essaye de compiler j'obtiens les erreurs suivantes.

'MSG': identificateur non déclaré 'HWND': identificateur non déclaré 'PM_REMOVE': identificateur non déclaré

mon code est comme ci-dessous ...

MSG message; 
    while(form->Created) 
       { 
        while(PeekMessage(&message, (HWND)form->Handle.ToPointer(), 0, 0, PM_REMOVE)) 
        { 
         TranslateMessage(&message); 
         DispatchMessage(&message); 
         if(!mainWindow->Created) 
          break; 
        } 
       } 

Je sais ce que ces structures ne sont que peut obtenir le compilateur pour les reconnaître. Ai-je manqué un ref ou existe-t-il un alias VC++ pour le même?

Cheers.

+0

Avez-vous déjà inclus windows.h? –

Répondre

1

Vous obtiendrez plusieurs collisions de noms de symbole méchant quand vous #include windows.h dans une application Windows Forms C++/CLI. Mais c'est auto-induit. Le pompage de votre propre boucle de message dans une application WF est et non approprié. Il en a déjà un, Application :: Run(). Vous ne pouvez pas écrire le vôtre, vous ne serez pas en mesure de pré-traiter le message de manière appropriée pour faire fonctionner des choses telles que les raccourcis clavier. Effectuez des didacticiels de programmation C++/CLI avant d'essayer ceci.