Précédent   Forum des professionnels en informatique > Général Développement > Programmation système > Windows
Windows Forum d'entraide sur la programmation Windows. Tutoriel API Windows
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/12/2011, 18h58   #1
Membre habitué
 
Homme
Inscription : avril 2004
Messages : 305
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 305
Points : 130
Points : 130
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
d'Oursse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2011, 10h04   #2
Membre habitué
 
Homme
Inscription : avril 2004
Messages : 305
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 305
Points : 130
Points : 130
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
d'Oursse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 09h56   #3
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 21 481
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

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

Informations forums :
Inscription : septembre 2005
Messages : 21 481
Points : 28 760
Points : 28 760
Envoyer un message via MSN à Médinoc
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.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 20h19   #4
Membre habitué
 
Homme
Inscription : avril 2004
Messages : 305
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 305
Points : 130
Points : 130
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 :
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
d'Oursse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 21h09   #5
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 21 481
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

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

Informations forums :
Inscription : septembre 2005
Messages : 21 481
Points : 28 760
Points : 28 760
Envoyer un message via MSN à Médinoc
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.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 23h14   #6
Membre habitué
 
Homme
Inscription : avril 2004
Messages : 305
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 305
Points : 130
Points : 130
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
d'Oursse est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h01.


 
 
 
 
Partenaires

Hébergement Web