Salut tout le monde !
Je croi que tout est dans le titre !
Merci d'avance !?
 Comment ajouter un bouton dans la barre de titre d'une fenêtre ?
 Comment ajouter un bouton dans la barre de titre d'une fenêtre ?
				
				
						
						
				Salut tout le monde !
Je croi que tout est dans le titre !
Merci d'avance !?
 
 
				
				
						
						
				Bonjour,
On dirai bienEnvoyé par Tenguryu
Les source d'emule ne sont t'elle pas dispo .... c'est peut etre dedans ??
lanonyme
 
 
				
				
						
						
				Je me permets de faire remonter ce sujet, car j'ai peut être un début de solution :
.dans le .h:
.dans le .cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11void __fastcall DessinBouton(int State); void __fastcall OnNCLBUTTONDOWN(TMessage& msg); void __fastcall OnNCLBUTTONUP(TMessage& msg); void __fastcall OnNCMOUSEMOVE(TMessage& msg); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_NCLBUTTONDOWN,TMessage,OnNCLBUTTONDOWN) MESSAGE_HANDLER(WM_NCLBUTTONUP,TMessage,OnNCLBUTTONUP) MESSAGE_HANDLER(WM_NCMOUSEMOVE,TMessage,OnNCMOUSEMOVE) END_MESSAGE_MAP(TForm)
Pour le dessin du bouton, avec deux états possibles (enfoncé, relaché):
La gestion des messages:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Pour finir quelques appels :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
NB : le fait que le bouton soit redessiné dans OnNCMOUSEMOVE est assez (voir tres) important puisque si le click sur ce bouton provoque un appel a un ShowMessage(...) ou MessageDlg, ou une autre Form modale du même genre,
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
au retour sur la Form je perdais ce bouton.
En effet, on ne repasse pas par le OnPaint de la Form, ni un autre évènement facilement accessible.
Avec le MouseMove, le bouton sera redessiné...
Je continuerais a chercher pour le coup du 'points' et des valeurs lors du test du positionnement de la souris, qui n'est pas tres beau.
En attendant vos remarques, et suggestions...
@ +
 
 
				
				
						
						
				Pour regler le problème du test du positionnement de la souris sur le bouton (ou non), je propose ceci :
.dans le .h, ajout de ceci :
.dans le .cpp, dans la fonction DessinBouton(...), apres la déclaration concernant le tagRect pour le dessin du bouton :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
et donc les gestion des messages seraient ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13// On détermine les coordonnées auxquelles on veut dessiner le //bouton : pRect.left = arect->left + 963; pRect.top = arect->top + 10; pRect.right = arect->left + 980; pRect.bottom = arect->top + 24; ---> //Stock des coordoonnées du Rect représentant le bouton... StockRect.left = pRect.left; StockRect.top = pRect.top; StockRect.right = pRect.right; StockRect.bottom = pRect.bottom;
Voili, voilou...
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
34
35
36
37
38
39
40
41
42
43
44
 Quelques progres...
 Quelques progres...
				
				
						
						
				Voici quelques modifications, qui permettent que le bouton suive bien lorsque la fenêtre est redimensionnée.
Mais surtout, lors du click() sur le bouton, la position de la souris semble effectivement bien repérée quelle que soit la position du bouton.
Il me reste a travailler pour les TForms 'spéciales', pour celles ayant comme valeur a BorderStyle autre chose que bsSizeable.
.dans le .h:
.dans le .cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Ce qui serait sympa, éventuellement, c'est que quelqu'un teste et vois si il y a quelquechose qui flanche, autre que le point que j'ai cité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
Il reste aussi le dessin dans le bouton a améliorer...
@+
 
 
				
				
						
						
				pas mal ca m"interesse aussi !!
dés que j'ai un peu de temps, je test ca...
++
 encore un petit progrès
 encore un petit progrès
				
				
						
						
				Une petite modif, sur le positionnement du bouton en fonction de la propriété BorderStyle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
 
				
				
						
						
				Bon, j'ai fait quelques tests pour ce qui est du 'dessin' dans le bouton....
Je pense qu'il est envisageable de garder les méthodes avec DrawEdge(...), afin d'obtenir des structures d'effet 3D grisées et de complémenter avec par exemple :
.dans le .h, ajout de:
et dans le .cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
puis, on remplace un des deux appels a DrawEdge(...) par cette fonction en lui fournissant les coordonnées a remplir par la surface représentée par une des deux structures de type tagRect, pour cette exemple : bottomRect.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
Après ...hé bien c'est au choix et en fonction des besoins pour travailler avec MoveToEx et LineTo afin de faire ce que l'on a besoin d'afficher...
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5DrawEdge(hdc, &topRect, BDR_SUNKENINNER, BF_TOPLEFT); //DrawEdge(hdc, &bottomRect, BDR_SUNKENINNER, BF_TOPLEFT); -> //on remplace par : DessinDeco(hdc, &bottomRect);
(bon, on peut dire que je me les casses pas trop la, mais je suis déja assez content d'être arrivé ici...)
Important :
Il faut remplacer dans la fonction :
la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
Voili, voilou...
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
En espérant que cela plaise...
@ +
//EDIT :
You know what ?....I'm happy....lol
 
 
				
				
						
						
				Testé !
Alors Bravo ca marche impec il faudra juste améliorer le design pas la suite mais c'est super !
++
 
 
				
				
						
						
				Envoyé par virtuA
Merci...c'est cool.
Il faut effectivement - je pense - jongler entre DrawEdge et le code dans 'DessinDeco(...)' afin d'obtenir ce qu'on veut comme dessin sur le bouton.
A moins que quelqu'un n'ait la 'vrai' solution ? ....
@ +
Partager