1

Bonjour!

Je cherche un moyen en qt/vc++ de détecter la position et la taille du bouton croix (quiter) dans une fenêtre.
J'ai vu qu'on peut détecter la version de Windows (http://msdn.microsoft.com/en-us/library/ms724429(VS.85).aspx),
mais ça ne suffit pas pour détecter si mon programme s'exécute sur un pc vista avec un thème de windows XP par exemple...
C'est possible?

2

Ça ne se détecte pas, ça se calcule... Et à mon avis avec Qt tu ne pourra jamais le faire correctement (ce n'est pas une constante réellement constante...)
Si tu veux faire du Windows, alors il faut faire du Windows, pas du Qt.
(Un API dont le nom doit être à peu de choses près GetSystemMetrics)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

3

Que veux-tu faire exactement qui nécessite de connaître la position du bouton ? Il y a peut-être une autre façon plus simple d'arriver au même résultat.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4

Je bosse sur de nouveaux moyens d'intéraction ; le but est de savoir quand la personne regarde la croix pour fermer la fenêtre en cours...
Peut être que GetSystemMetrics contient la solution à mon problème, merci :-)
J'y jette un coup d'oeil un de ces 4

5

Ah OK... un moyen possible, si tu as les coordonnées de l'endroit qui est regardé, c'est d'envoyer le message WM_NCHITTEST à la fenêtre avec PostMessage() et d'observer le résultat retourné. Ça a l'avantage de fonctionner quelque soit le thème graphique appliqué, et tu peux t'en servir aussi pour les autres éléments de l'interface (bouton Minimiser, barre de titre, etc.).

Après, comme j'imagine que les coordonnées que tu as ne sont pas précises au pixel près, il faudra probablement tester point par point dans un cercle ou un carré centré sur les coordonnées.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

6

Mais pour savoir si le curseur passe sur la croix, tu dois gérer WM_NCMOUSEMOVE et WM_THEMECHANGED. Je ne suis pas sur que ce soit possible avec une librairie multiplateforme comme QT...
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

7

Ah oui, c'est sûr qu'il faut faire du code spécifique à Windows là, donc je doute aussi qu'on puisse s'en sortir avec Qt seul.

Pour NC_MOUSEMOVE, je pense pas que ça corresponde à ce qu'il fait, puisque d'après ce que j'ai compris il cherche à savoir les coordonnées du bouton pour interpréter les coordonnées renvoyées par autre chose qu'une souris (c'est un système pour personne handicapées motrices j'imagine ?).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

8

Je fais pas du multiplateforme. J'utilise Qt sous windows, avec le compilo vc++
J'ai inclus windows.h dans la moitié de mes fichiers.
Zerosquare (./5) :
Ah OK... un moyen possible, si tu as les coordonnées de l'endroit qui est regardé, c'est d'envoyer le message WM_NCHITTEST à la fenêtre avec PostMessage() et d'observer le résultat retourné.


Si ça passe par un message, c'est indépendant de la souris non? Ca répondrait parfaitement à mes attentes :-)

9

Oui tout à fait.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

10

./7 > Ah en fait j'avais cross avec toi sans m'en rendre compte... tongue
Mais ta solution doit fonctionner en effet smile
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes