2011-02-13 8 views
1

Je crée un projet d'interface graphique Win32 en utilisant Code :: Blocks et le compilateur MinGW. A cette ligne de mon code:Erreur d'instruction du commutateur graphique C++ Win32

switch(LOWORD(WPARAM)) 

qui est l'instruction switch pour lequel le bouton Menu a été cliqué, je reçois l'erreur suivante lors de la compilation:

error: expected primary-expression before ')' token 

Je trouve d'autres cas de cette erreur sur d'autres forums de programmation mais les réponses n'ont pas aidé mon cas. Au cas où vous en auriez besoin, voici le code entourant l'instruction switch:

case WM_COMMAND: 
    switch(LOWORD(WPARAM)) 
    { 
     case ID_HELP_ABOUT: 
      MessageBox(hwnd, "--------------", "-----", MB_OK | MB_ICONINFORMATION); 
     break; 
    } 
    break; 

Le texte MessageBox a été masqué. Que signifie le message d'erreur et y a-t-il quelque chose dans mon code que je puisse ajouter (ou supprimer) pour l'empêcher?

Répondre

5

Le problème est que

LOWORD(WPARAM) 

appelle la macro LOWORD du type WPARAM plutôt qu'une variable de type WPARAM. Ceci serait similaire à l'appel

printf(char *); 

Par exemple. Pour résoudre ce problème, modifiez le code afin qu'il appelle LOWORD sur une variable WPARAM. La plupart des procédures de fenêtre appellent ce wParam, donc vous pouvez essayer

LOWORD(wParam) 
+0

Merci, en changeant 'WPARAM' en' wParam' a fait l'affaire. –

4

WPARAM est un type pas un nom de variable, vous avez probablement voulu dire wParam ou un nom de variable similaire pour votre instruction switch:

switch(LOWORD(wParam)) 
... 
2

Je pense que wparam devrait être en minuscule. Impossible de dire parce que le nom exact est dans la signature de la fonction qui n'est pas visible.