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 :

problème avec HTCAPTION et WM_WINDOWPOSCHANGED


Sujet :

Windows

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Points : 177
    Points
    177
    Par défaut problème avec HTCAPTION et WM_WINDOWPOSCHANGED
    une petite question avant Noël (le papa Noël me répondra-t-il ?)

    j'ai écrit une appli qui gère plusieurs messages. WM_WINDOWPOSCHANGED est appelé quand je clique sur le bord de la fenêtre, mais quand je clique sur la barre de titre (ce qui correspond à HTCAPTION, je pense), WM_WINDOWPOSCHANGED n'est pas appelé. Je ne comprends pas pourquoi.

    Quelqu'un aurait-il une idée de la raison de ce comportement ?

    Si nécessaire, je peux fournir la fonction qui gère les messages

    merci et joyeux noël
    L'Opus attire les Prélats

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Points : 177
    Points
    177
    Par défaut
    Notez que je prends en compte le message WM_NCLBUTTONDOWN et que wParam vaut bien HTCAPTION quand je clique sur la barre de titre.
    L'Opus attire les Prélats

  3. #3
    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 519
    Points
    41 519
    Par défaut
    WM_WINDOWPOSCHANGED n'est-il pas reçu quand tu relâches le bouton?
    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.

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Points : 177
    Points
    177
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    WM_WINDOWPOSCHANGED n'est-il pas reçu quand tu relâches le bouton?

    Non.

    Pour être plus précis, le problème que j'ai est le suivant : je lance mon application. Je lance une autre application (n'importe laquelle). Cette dernière se trouve en avant plan et recouvre en partie mon application. Pour faire apparaître mon application en avant plan, je clique sur la barre de titre. Mon application ne change pas de position. Avec Spy++:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <00041> 000804BE P WM_NCMOUSEMOVE nHittest:HTCAPTION xPos:969 yPos:100
    <00042> 000804BE S WM_NCHITTEST xPos:969 yPos:100
    <00043> 000804BE R WM_NCHITTEST nHittest:HTCAPTION
    <00044> 000804BE S WM_MOUSEACTIVATE hwndTopLevel:000804BE nHittest:HTCAPTION uMsg:WM_LBUTTONDOWN
    <00045> 000804BE R WM_MOUSEACTIVATE fuActivate:MA_NOACTIVATE
    <00046> 000804BE S WM_SETCURSOR hwnd:000804BE nHittest:HTCAPTION wMouseMsg:WM_LBUTTONDOWN
    <00047> 000804BE R WM_SETCURSOR fHaltProcessing:False
    <00048> 000804BE P WM_NCLBUTTONDOWN nHittest:HTCAPTION xPos:969 yPos:100
    <00049> 000804BE P WM_LBUTTONUP fwKeys:0000 xPos:271 yPos:-15
    <00050> 000804BE S WM_CAPTURECHANGED hwndNewCapture:00000000
    <00051> 000804BE R WM_CAPTURECHANGED
    peut-être est-ce normal et c'est à moi de fare un RaiseWindow() soit dans WM_NCHITTEST soit dans WM_NCLBUTTONDOWN (je le ferait dans ces messages car pour les autres applications, c'est lors de button down que la fenêtre vient en avant plan, et non dans button up
    L'Opus attire les Prélats

  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 519
    Points
    41 519
    Par défaut
    J'ai du mal à comprendre, le WM_NCLBUTTONDOWN, tu l'interceptes ou tu laisse DefWindowProc() s'en occuper?

    Normalement, DefWindowProc() doit, en réponse à un tel message, déclencher une boucle modale de déplacement de la fenêtre (attention, cela cause de la réentrance).
    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 habitué
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Points : 177
    Points
    177
    Par défaut
    j'intercepte WM_NCLBUTTONDOWN. Et je l'utilise en effet entre autre au déplacement de la fenêtre (ainsi qu'au redimensionnement si je drag le bord).

    Mais ce que ne je comprends pas est la différence de comportement lorsque je clique sur la barre de titre (pas de WM_WINDOWPOSCHANGED) et lorsque je clique sur le bord (WM_WINDOWPOSCHANGED est généré)
    L'Opus attire les Prélats

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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