Partage
  • Partager sur Facebook
  • Partager sur Twitter

api windows erreur E0167

Sujet résolu
    24 mai 2019 à 6:44:08

    Bonjour,

    je suis en train de tenter de développer une petite appli destinée à faire des calculs comptables, en c++ avec l'api windows (je précise que je débute et que j'apprend en même temps que je le fais).

    Mon problème est que j'ai l'erreur E0167 "le parametre de type int est incompatible avec le parametre de type HMENU" avec le ID_MOISINV. (j'utilise visual studio 2019)

    voici l'extrait de code (si vous voulez le reste je l'ajouterai) :

    #include <Windows.h>
    #include <WinUser.h>
    #include "DateInv.h"
    
    
    #define ID_JOURINV 0
    #define ID_MOISINV 1
    
    
    HINSTANCE hInstance;
    
    
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
    
    void FenetreDateInv(HWND hwnd)
    {
    	HWND htcl1 = CreateWindowEx(
    		WS_EX_TRANSPARENT,
    		L"STATIC",
    		L"Date du premier inventaire",
    		WS_CHILD | WS_VISIBLE | SS_LEFT,
    		10,
    		10,
    		300,
    		20,
    		hwnd,
    		NULL,
    		hInstance,
    		NULL
    	);
    
    	HWND hedit1 = CreateWindowEx(
    		WS_EX_TRANSPARENT,
    		L"EDIT",
    		L"JJ",
    		WS_CHILD | WS_VISIBLE | WS_BORDER| ES_CENTER| ES_NUMBER,
    		10,
    		30,
    		30,
    		25,
    		hwnd,
    		ID_JOURINV, // ici, pas de problème
    		hInstance,
    		NULL
    	);
    
    	HWND htcl2 = CreateWindowEx(
    		WS_EX_TRANSPARENT,
    		L"STATIC",
    		L"/",
    		WS_CHILD | WS_VISIBLE | SS_CENTER,
    		40,
    		30,
    		10,
    		25,
    		hwnd,
    		NULL,
    		hInstance,
    		NULL
    	);
    
    	HWND hedit2 = CreateWindowEx(
    		WS_EX_TRANSPARENT,
    		L"EDIT",
    		L"MM",
    		WS_CHILD | WS_VISIBLE | WS_BORDER | ES_CENTER| ES_NUMBER,
    		50,
    		30,
    		30,
    		25,
    		hwnd,
    		ID_MOISINV, // l'erreur est ici
    		hInstance,
    		NULL
    	);
    
    }
    


    ce que je ne comprend pas, c'est que j'ai pas le problème avec le ID_JOURINV.

    je précise que les variables (int pour les 2) jourInv et moisInv sont déclarées dans DateInv.h

    merci d'avance pour votre aide. j'ai beau chercher sur internet je trouve pas de solution, ni meme d'explication d'ailleurs.

    ps : j'en profite pour poser une autre question, est-ce que je peux mettre la fonction fenetreDateInv dans le fichier DateInv.cpp et l'appeler depuis le fichier .cpp principal pour éviter de trop le surcharger ?

    -
    Edité par robreno1985 24 mai 2019 à 6:45:13

    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2019 à 11:07:55

      Hola

      HMENU(ID_MOISINV)

      robreno1985 a écrit:

      ce que je ne comprend pas, c'est que j'ai pas le problème avec le ID_JOURINV.

      Tu n'as pas l'erreur avec l'autre car elle vaut 0. NULL donc. A changer donc.


      robreno1985 a écrit:

      ps : j'en profite pour poser une autre question, est-ce que je peux mettre la fonction fenetreDateInv dans le fichier DateInv.cpp et l'appeler depuis le fichier .cpp principal pour éviter de trop le surcharger ?

      Pourquoi tu ne pourrais pas ? Tant que tu lui passe son Handle correctement et que tu as fait tes includes correctement.

      EDIT : Aussi, tu as oublié de
      1) récupérer les handle de retour.
      2) t'occuper de la gestion des erreurs

      	HWND hedit2;
      	if((hedit2 = CreateWindowEx(
      		WS_EX_TRANSPARENT,
      		L"EDIT",
      		L"MM",
      		WS_CHILD | WS_VISIBLE | WS_BORDER | ES_CENTER | ES_NUMBER,
      		50,
      		30,
      		30,
      		25,
      		hwnd,
      		HMENU(ID_MOISINV), // l'erreur est ici
      		hInstance,
      		NULL
      	)) == NULL) { printf("Error code {%d}", GetLastError()); }



      -
      Edité par LilyKianii 24 mai 2019 à 11:31:10

      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2019 à 11:09:57

        LilyKianii a écrit:

        Hola

        HMENU(ID_MOISINV)

        Tu n'as pas l'erreur avec l'autre car elle vaut 0. NULL donc.


        et je met ca où ? dans la fonction CreateWindowEx, à la place de ID_MOISINV ?
        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2019 à 11:38:13

          robreno1985 a écrit:

          LilyKianii a écrit:

          Hola

          HMENU(ID_MOISINV)

          Tu n'as pas l'erreur avec l'autre car elle vaut 0. NULL donc.


          et je met ca où ? dans la fonction CreateWindowEx, à la place de ID_MOISINV ?

          Oui. Pas sûr que ce soit ce que tu cherches à faire cependant.

          • Partager sur Facebook
          • Partager sur Twitter
            24 mai 2019 à 12:24:50

            merci beaucoup, je viens de tester et je n'ai plus l'erreur. Apres compilation (pour voir à quoi ca ressemble), ca fait ce que je veux donc je verrais pour la suite si ça fonctionne comme je le souhaite, avec l'initialisation des variables avec ce qui est entré dans le champ d'édition (ça je pense que j'ai réussi mais je verrais plus en détail plus tard ^^).

            par contre j'ai remplacer le 0 dans le #define ID_JOURINV, je veux pas que ca le considère comme un NULL

            je met le sujet en résolu.

            encore merci pour l'aide que tu m'as apporté, et vite en plus ^^

            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2019 à 19:11:16

              LilyKianii a écrit:

              EDIT : Aussi, tu as oublié de
              1) récupérer les handle de retour.
              2) t'occuper de la gestion des erreurs

              	HWND hedit2;
              	if((hedit2 = CreateWindowEx(
              		WS_EX_TRANSPARENT,
              		L"EDIT",
              		L"MM",
              		WS_CHILD | WS_VISIBLE | WS_BORDER | ES_CENTER | ES_NUMBER,
              		50,
              		30,
              		30,
              		25,
              		hwnd,
              		HMENU(ID_MOISINV), // l'erreur est ici
              		hInstance,
              		NULL
              	)) == NULL) { printf("Error code {%d}", GetLastError()); }



              ok merci, je vais rajouter ça.

              • Partager sur Facebook
              • Partager sur Twitter
                6 juin 2019 à 19:23:00

                Sinon, vous pouvez aussi essayer des trucs moins obsolète que Win32 SDK comme les MFC ou Qt, votre productivité me remerciera.
                • Partager sur Facebook
                • Partager sur Twitter
                Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                  7 juillet 2019 à 8:31:48

                  désolé pour la réponse tardive.

                  j'ai voulu testé QT mais j'arrive même pas à démarrer. tous les tuto que j'ai trouvé commence par

                  #include <QApplication>

                  et déjà là ça me sort une erreur comme quoi QApplication n'existe pas.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 juillet 2019 à 9:58:41

                    Il faut juste configurer votre projet pour qu'il utilise les .h de Qt.

                    C'est le b.a-ba de l'utilisation d'une librairie.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                      8 juillet 2019 à 17:59:55

                      ok merci, je vais regarder ça

                      edit : c'est quand même bizarre que ce soit pas configuré par défaut dans qt creator. mais bon, c'était bien ça le problème. merci beaucoup

                      -
                      Edité par robreno1985 12 juillet 2019 à 6:16:55

                      • Partager sur Facebook
                      • Partager sur Twitter

                      api windows erreur E0167

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown