IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Sendmessage() warning: passing arg 1 of `SendMessageA' from incompatible pointer type


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Responsable administratif à la pension
    Inscrit en
    Février 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable administratif à la pension

    Informations forums :
    Inscription : Février 2006
    Messages : 72
    Par défaut Sendmessage() warning: passing arg 1 of `SendMessageA' from incompatible pointer type
    Je code sous Code::Blocks.

    Je lance la boîte de dialogue principale de mon programme grâce à l 'instruction suivante :SendMessage(hInstance,WM_SETICON,(WPARAM)ICON_SMALL,(LPARAM)500).

    Tout fonctionne parfaitement mais j'ai un warning de CB : warning: passing arg 1 of `SendMessageA' from incompatible pointer type. J'aimerais corriger mon texte pour éviter ce warning...

    Je n'ai rien trouvé sur Google, quelqu'un peut-il m'aider ?

    Merci d'avance,

    hologram
    .oO°^°Oo.

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Bin s'il y a un warning c'est que tout ne fonctionne pas parfaitement .

    1. SendMessage sert à envoyer un message à une fenêtre. Le premier argument requis par cette fonction est le handle de la fenêtre à lquelle on veut envoyer un message. Qu'est-ce donc ce hInstance ... ?

    2. WM_SETICON est le message qu'il faut envoyer pour changer l'icône associée à une fenêtre. Lorsqu'on on envoie ce message, il faut mettre ICON_BIG ou ICON_SMALL dans wParam selon qu'on veut changer le "BIG ICON" ou le "SMALL ICON". BIG ICON est l'icône affichée par Windows lorsqu'on appuie sur ALT + TAB et SMALL ICON celle que Windows affiche dans la barre de titre de la fenêtre. Puis dans lParam, il faut mettre le handle de l'icône. Donc le (LPARAM)500, c'est pas bien du tout. 500 est le handle d'une icône ?

    3. Je sais tout cela car j'ai cherché sur Google .

    WM_SETICON Message

  3. #3
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Citation Envoyé par hologram
    Je lance la boîte de dialogue principale de mon programme grâce à l'instruction suivante : SendMessage(hInstance,WM_SETICON,(WPARAM)ICON_SMALL,(LPARAM)500).
    Euh ... non c'est pas cette instruction qui lance la boîte de dialogue. C'est DialogBox ou CreateDialog. Utilise DialogBox.

  4. #4
    Membre confirmé
    Profil pro
    Responsable administratif à la pension
    Inscrit en
    Février 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable administratif à la pension

    Informations forums :
    Inscription : Février 2006
    Messages : 72
    Par défaut
    Bon, visiblement mon morceau de code n'était pas suffisant et j'ai dit une connerie c'est pas cette instruction qui lance la dialogbox . Cette instruction vient en complément et génère le placement de l'icône sur la boîte de dialogue.

    Voici l'instruction qui lance la dialogbox :
    DialogBox(hInstance,"DIALOG1",NULL,(DLGPROC)DlgProc);

    Je programme ensuite l'instruction qui génère l'icône et qui donne le message d'erreur :
    SendMessage(hInstance,WM_SETICON,(WPARAM)ICON_SMALL,(LPARAM)500);

    Le paramètre (LPARAM)500 correspond à un define du resource.h. Ceci dit tout fonctionne correctement, ... , je cherche à améliorer le texte et à comprendre les erreurs.

    Le restant je l'ai aussi trouvé sur google.

    hologram

  5. #5
    Membre confirmé
    Profil pro
    Responsable administratif à la pension
    Inscrit en
    Février 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable administratif à la pension

    Informations forums :
    Inscription : Février 2006
    Messages : 72
    Par défaut
    Bon j'ai déplacé l'initialisation des icônes dans le case WM_INITDIALOG , avec les instructions suivantes et je n'ai plus mon message d'erreur. Et ça fonctionne. Est-ce plus propre comme ça ?

    hIcon=LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(DLG_ICON));
    SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
    SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);

    hDlg = le handle de la Dlgbox.

    hologram

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Bon j'ai déplacé l'initialisation des icônes dans le case WM_INITDIALOG , avec les instructions suivantes et je n'ai plus mon message d'erreur. Et ça fonctionne. Est-ce plus propre comme ça ?

    hIcon=LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(DLG_ICON));
    SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
    SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);

    hDlg = le handle de la Dlgbox.
    Pas que c'est plus propre (ce qui insinuerait que l'autre version était propre d'une quelconque manière ), c'est ENFIN propre. hInstance n'est pas un handle d'une boîte de dialogue, tu espérais quel résultat ? 500 (DLG_ICON je suppose) n'est pas le handle d'une icône, mais l'id d'une icône en ressource. Il faut appeler LoadIcon par exemple pour avoir un handle vers cette icône. Bonne continuation .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Warning: Call-time pass-by-reference has been deprecated
    Par Poseidon62 dans le forum Langage
    Réponses: 8
    Dernier message: 16/10/2011, 16h03
  2. Réponses: 2
    Dernier message: 02/04/2010, 12h44
  3. Réponses: 4
    Dernier message: 15/08/2007, 16h47
  4. Réponses: 9
    Dernier message: 21/10/2006, 13h38
  5. Warning lors du this passé dans un constructeur
    Par NicolasJolet dans le forum C++
    Réponses: 9
    Dernier message: 10/08/2006, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo