EnumChildWindows() + GetWindowLong(GWL_STYLE) & BS_TYPEMASK
Tester ci s'est l'une des valeurs suivantes: BS_CHECBOK, BS_AUTOCHECKBOX, BS_3STATE, BS_AUTO3STATE
EnumChildWindows() + GetWindowLong(GWL_STYLE) & BS_TYPEMASK
Tester ci s'est l'une des valeurs suivantes: BS_CHECBOK, BS_AUTOCHECKBOX, BS_3STATE, BS_AUTO3STATE
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.
Oula je crois que définitivement le C++ et moi on n'est pas ami...
Alors j'ai essayé de coder ce que j'ai compris...Envoyé par Médinoc
Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 { //blabla if (RememberHwnd == NULL) { theApp.Log(_T("RememberHwnd not found")); } else { //::SendMessage(RememberHwnd, BM_SETCHECK, BST_CHECKED, 0); //Sleep(1000); EnumChildWindows(DirectUIHWND,EnumWindowsProc, 0); } //blabla } BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { int winLong = ::GetWindowLongPtr(hwnd, GWL_STYLE); int typeMask = ::GetWindowLongPtr(hwnd, BS_TYPEMASK); if ((winLong == BS_CHECKBOX || winLong == BS_AUTOCHECKBOX || winLong == BS_3STATE || winLong == BS_AUTO3STATE) || (typeMask == BS_CHECKBOX || typeMask == BS_AUTOCHECKBOX || typeMask == BS_3STATE || typeMask == BS_AUTO3STATE)) { ::SendMessage(hwnd, BM_SETCHECK, BST_CHECKED, 0); } return TRUE; }
Et ça pointe sur l'appel...Envoyé par Compilateur
Code non testé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 BOOL CALLBACK MyEnumWindowsProc(HWND hwndSink, LPARAM lParam) { HWND hwndButton = ::FindWindowEx(hwndSink, NULL, TEXT("Button"), NULL); if(hwndButton != NULL) { DWORD style = ::GetWindowLongPtr(hwndButton, GWL_STYLE); btnType = style & BS_TYPEMASK; if (btnType == BS_CHECKBOX || btnType == BS_AUTOCHECKBOX || btnType == BS_3STATE || btnType == BS_AUTO3STATE) { ::SendMessage(hwndButton , BM_SETCHECK, BST_CHECKED, 0); } } return TRUE; } void Blabla() { //blabla if (RememberHwnd == NULL) { theApp.Log(_T("RememberHwnd not found")); } else { //::SendMessage(RememberHwnd, BM_SETCHECK, BST_CHECKED, 0); //Sleep(1000); EnumChildWindows(DirectUIHWND,MyEnumWindowsProc, 0); } //blabla }
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.
Ok on avance...
Je rentre bien dans le if mais il ne coche pas cette $*§@£% de checkbox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 BOOL CALLBACK MyEnumWindowsProc(HWND hwndSink, LPARAM lParam) { HWND hwndButton = ::FindWindowEx(hwndSink, NULL, TEXT("Button"), NULL); if(hwndButton != NULL) { DWORD style = ::GetWindowLongPtr(hwndButton, GWL_STYLE); DWORD btnType = style & BS_TYPEMASK; if (btnType == BS_CHECKBOX || btnType == BS_AUTOCHECKBOX || btnType == BS_3STATE || btnType == BS_AUTO3STATE) { // The checkBox... ::SendMessage(hwndButton , BM_SETCHECK, BST_CHECKED, 0); // Its parent, we never know... ::SendMessage(hwndSink , BM_SETCHECK, BST_CHECKED, 0); } } return TRUE; }
As-tu testé avec l'UAC désactivé?
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.
Non. Comment je fais ça ? Je ne sais même pas ce qu'est l'UAC...
http://en.wikipedia.org/wiki/User_Account_Control
Il y a une option dans Panneau de Configuration > Comptes d'Utilisateurs.
Sinon, tu peux essayer en lançant simplement ton programme en tant qu'Admin, et voir si ça marche mieux.
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager