Getwindowlong

Résolu
unrealgun Messages postés 87 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 4 mars 2008 - 13 janv. 2006 à 16:45
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 15 janv. 2006 à 20:11
Bonjour,
j'expose mon probleme :
j'ai une liste de handles de fenetres et des checkboxes.
ces checkboxes représentent des propriétés de la fenetre.
j'ai vu qu'on peut récuperer ces propriétés avec getwindowlong.
Cependant, cette fonction me renvoie tout un bloc de propriétés additionnées, et c'est trop long de vérifier chaque valeur possible.
Je voudrais donc savoir s'il y a un moyen de vérifier si oui ou non, chakune des propriétés est présente ou pas.

Merci d'avance.

10 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 janv. 2006 à 22:50
if(valeur & style) JeCocheCaseStyle();

Le '&' qui effectue un AND est fait pour cela.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
3
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
14 janv. 2006 à 00:41
00010010
01001001

&
01000100
& 01000101

----------------
------------------

=
00000000
= 01000001



00010010

| 01000100

----------------

= 01010110


Clair non ? :o

PS : C'est du binaire hein lol
if(!Meilleur("Joky")) return ERREUR;<
3
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
15 janv. 2006 à 03:06
pour faire simple :
//Je veux savoir si ma fenetre possede un menu system
if(WS_SYSMENU & GetWindowLong(hwnd, GWL_STYLE))
{
//Oui
}
else
{
//Non
}

Sinon, pour la portabilité avec les plateforme 64bits, il faut utiliser GetWindowLongPtr et SetWindowLongPtr.
3
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
15 janv. 2006 à 18:25
Tous le styles que tu peux définir peuvent êtres supprimés a condition bien sur de verifier si ils sont définit et bien sur de respecter les styles imperatif lors de la définition d'un autre (par exemple le style 2 ne peut etre definit que si le style 1 l'a été, il ne faut donc pas supprimer le style 1 alors que le 2 a été définit)
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 janv. 2006 à 20:11
Enlever un style:
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~lStyle);

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 janv. 2006 à 18:49
Les valeurs se testent par masque binaire sur ce que retourne GetWindowLong.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
unrealgun Messages postés 87 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 4 mars 2008
13 janv. 2006 à 21:44
Et comment puis-je me servir de ce masque binaire ???
Quelqu'un pourrait-il me donner un exemple de code ou un lien SVP ?
0
unrealgun Messages postés 87 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 4 mars 2008
15 janv. 2006 à 11:34
Ok, merci beaucoup a tous ceux qui m'ont répondu, cela me sera très utile.
0
unrealgun Messages postés 87 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 4 mars 2008
15 janv. 2006 à 17:58
une dernière question :

si je veux soustraire un seul style à une fenetre, je fais getwinlong() - WS_MONSTYLE ?

et comment e sais quels styles je peux changer avec setwindowlong et ceux qui sont en lecture seule ?
0
unrealgun Messages postés 87 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 4 mars 2008
15 janv. 2006 à 20:03
merci beaucoup ctx man.
0
Rejoignez-nous