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 :

[WIN32] - Messages hors fenetre


Sujet :

Windows

  1. #1
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut [WIN32] - Messages hors fenetre
    Bonjour,

    Je developpe actuellement une petite appli sous windows, en WIN32 (sans les MFC)

    J'ai le probleme suivant :

    Lorsque je clique sur une zone de mon appli, le clic est detecté (message WM_LBUTTONDOWN) puis lorsque je relache le bouton, pareil (message WM_LBUTTONUP)

    Tout marche tres bien, sauf que si j'appui sur le bouton dans la zone de l'appli, puis (le bouton toujours appuyé) je deplace le curseur en dehors de la fenetre pour relacher le bouton en dehors, l'appli ne recoit pas le message WM_LBUTTONUP...

    Comment faire pour qu'elle le recoive quand meme ? (meme si elle n'a pas le focus, si le bouton est relaché en dehors...)

    J'ai essayé avec WM_NCLBUTTONUP, mais ca ne change rien...

    Merci !

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Renseigne-toi sur SetCapture(), "Capturing the mouse", WM_CAPTURECHANGED qui servent justement à cela.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Cool !

    Merci !

  4. #4
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Euh, sinon j'ai un autre souci :

    J'ai ecrit une classe pour creer des fenetre popup.

    Ca ressemble à ca :

    fenetre = new cFenetrePopup(x,y,l,h);

    Le constructeur de cFenetrePopup instancie une fenetre, sa procedure de messages, tout ça tout ça...

    Lors de l'appel au destructeur, je fait un destroyWindow(), du coup tout se passe bien.

    Le souci, c'est que si je clique sur la petite croix permettant de fermer la fenetre, celle-ci est supprimé, mais l'instance de la classe n'est pas detruite...

    Comment faire pour que lorque la fenetre recoit un message WM_DESTROY, l'instance de la classe soit detruite ?

    Je precise que c'est dans le cadre d'un plugin, et je n'ai donc pas acces à la fonction de traitement de messages de la fenetre ayant créée ma popup...

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Moi, j'avais fait des classes similaires, avec un mode "auto-delete".
    Si le mode auto-delete était activé, je faisais un delete this sur le WM_NCDESTROY (après avoir dissocié l'objet de la fenêtre).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    ok !

    Apres avoir dissocié l'objet de la fenêtre ?

    Peux-tu preciser cela ?

    Merci !

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Mes classes de fenêtre servaient notamment à relier l'objet à la fenêtre, pour toujours avoir ses données en main lors de la WindowProc(). Généralement, je fais ça avec SetWindowLongPtr() pour stocker dans la fenêtre un pointeur vers l'objet. Et au moment où je détruis l'objet, je refais un SetWindowLongPtr() pour mettre un pointeur NULL à la place...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Ok, parfait !

    En fait je fait pareil, mais je n'avait pas pensé à mettre SetWindowLongPtr() à NULL pour pouvoir effacer proprement l'objet de la fenetre !

    Merci !

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

Discussions similaires

  1. [win32] messages de fenetre WM_SIZE et WM_ACTIVATE
    Par NiamorH dans le forum Windows
    Réponses: 12
    Dernier message: 25/05/2007, 19h31
  2. [Windows Live Messenger]question sur les messages hors connexion
    Par jmclej dans le forum Messagerie instantanée
    Réponses: 9
    Dernier message: 21/06/2006, 13h34
  3. Réponses: 4
    Dernier message: 24/08/2005, 16h01

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