OVH Cloud OVH Cloud

Design de fenêtre et autre.

30 réponses
Avatar
Maxime
Bonjour =E0 tous,

Je suis actuellement en train de d=E9velopper une GUI =E0 base de l'API
WIN32. Et je suis confront=E9 =E0 plusieurs probl=E8mes :

1-Je n'arrive pas =E0 trouver une biblioth=E8que permettant d'afficher les
bmp ET les jpgs, tga, gif (=E9ventuellement les lire) et images de ce
genre;
2-Je n'arrive pas =E0 faire fonctionner l'impl=E9mentation des fonctions
de retournement d'images, ... en bref, de modifications d'images;
3-Je n'arrive pas =E0 trouver une fonction permettant de changer le
design d'une fen=EAtre, =E0 savoir par exemple son fond, actuellement elle
ressemble =E0 une fen=EAtre Windows95;
4-Je n'arrive pas non plus =E0 trouver de fonction permettant de changer
le design d'un bouton, ils font plus du type de Windows95
actuellement;
5-Dans mon switch qui analyse les messages provenant de l'utilisateur,
lorsque je fais plusieurs if pour savoir -via le lParam- de quel
bouton vient le message, il ne se passe rien;
6-Je n'arrive pas non plus =E0 faire fonctionner les TreeView, notamment
=E0 cause de ressources manquantes pour les images (plus, moins,
dossier...).

Je sais que je demande beaucoup et qu'une seule personne ne saura pas
n=E9cessairement r=E9pondre =E0 toutes mes questions, mais merci =E0 tous c=
eux
qui voudront bien apporter leur pierre ;).

10 réponses

1 2 3
Avatar
Christian ASTOR
On 15 nov, 21:15, Maxime wrote:

Néanmoins, j'aurais besoin de changer la couleur de fond de la
fenêtre. Sais-tu comment faire?



Il y a diverses méthodes.
Le plus simple est dans le RegisterClassEx() :
wcex.hbrBackground = .....

De plus, je n'ai pas bien compris ce que tu m'a dit au sujet des
messages avec le HIWORD; comment saurais-je qui plus est de quel
bouton vient le message?



Par exemple :
if (HIWORD (wParam) == BN_CLICKED)
{
if (lParam == (LPARAM)hButton1)
MessageBox(NULL, "Button 1", "Message", MB_OK);
}
Avatar
Maxime
On 15 nov, 21:31, Christian ASTOR wrote:
On 15 nov, 21:15, Maxime wrote:

> Néanmoins, j'aurais besoin de changer la couleur de fond de la
> fenêtre. Sais-tu comment faire?

Il y a diverses méthodes.
Le plus simple est dans le RegisterClassEx() :
wcex.hbrBackground      = .....




Merci beaucoup (les messages marchent aussi!) mais à présent j'ai le
problème de changer la couleur de fond de la zone texte des
groupbox... Il y a-t-il une fonction ou est-ce dans le manifest?
Avatar
Christian ASTOR
On 15 nov, 22:21, Maxime wrote:

Merci beaucoup (les messages marchent aussi!) mais à présent j'ai le
problème de changer la couleur de fond de la zone texte des
groupbox... Il y a-t-il une fonction ou est-ce dans le manifest?



Pour le background du texte, avec WM_CTLCOLORSTATIC (retourner un
Brush handle)
Avatar
Maxime
On 16 nov, 12:03, Christian ASTOR wrote:
On 15 nov, 22:21, Maxime wrote:

> Merci beaucoup (les messages marchent aussi!) mais à présent j'ai l e
> problème de changer la couleur de fond de la zone texte des
> groupbox... Il y a-t-il une fonction ou est-ce dans le manifest?

Pour le background du texte, avec WM_CTLCOLORSTATIC (retourner un
Brush handle)



Hum... je ne comprends pas trop comment on se sert de la fonction
WM_COLORSTATIC... Je croyais qu'il n'y avait plus de HDC?

De plus, lorsque j'utilise les BS_SPLITBUTTON et son homonyme avec une
flèche du type commandlink, il me dit que ces boutons sont inconnus...

Enfin, comment faire pour que mon interface actuelle ressemble plus à
celle de Windoce :

[url=http://images.imagehotel.net/?syhjt0ov7i.jpg][img]http://
images.imagehotel.net/syhjt0ov7i_tn.jpg[/img][/url]
Avatar
Christian ASTOR
On 16 nov, 19:24, Maxime wrote:

Hum... je ne comprends pas trop comment on se sert de la fonction
WM_COLORSTATIC... Je croyais qu'il n'y avait plus de HDC?



C'est WM_CTLCOLORSTATIC et c'est un message, pas une fonction
Comme c'est écrit dans la doc, retourner un Brush handle, custom ou
system (GetStockObject() par exemple)

De plus, lorsque j'utilise les BS_SPLITBUTTON et son homonyme avec une
flèche du type commandlink, il me dit que ces boutons sont inconnus...



Voir le source pour BS_SPLITBUTTON :
#if _WIN32_WINNT >= 0x0600
donc rajouter s'il n'y est pas un #define suffisant...
Avatar
Maxime
> > De plus, lorsque j'utilise les BS_SPLITBUTTON et son homonyme avec une
> flèche du type commandlink, il me dit que ces boutons sont inconnus.. .

Voir le source pour BS_SPLITBUTTON :
#if _WIN32_WINNT >= 0x0600
donc rajouter s'il n'y est pas un #define suffisant...



Dans quel header dois-je trouver celà?

De plus, pourrais-tu me donner un exemple de code pour la couleur de
fond? J'ai du mal à trouver ces que nécessite chaque fonctions/
message...
Avatar
Maxime
On 18 nov, 23:59, Maxime wrote:
> > De plus, lorsque j'utilise les BS_SPLITBUTTON et son homonyme avec un e
> > flèche du type commandlink, il me dit que ces boutons sont inconnus ...

> Voir le source pour BS_SPLITBUTTON :
> #if _WIN32_WINNT >= 0x0600
> donc rajouter s'il n'y est pas un #define suffisant...

Dans quel header dois-je trouver celà?

De plus, pourrais-tu me donner un exemple de code pour la couleur de
fond? J'ai du mal à trouver ces que nécessite chaque fonctions/
message...



Up?
Avatar
Christian ASTOR
On 23 nov, 17:57, Maxime wrote:
> Dans quel header dois-je trouver celà?
> De plus, pourrais-tu me donner un exemple de code pour la couleur de
> fond? J'ai du mal à trouver ces que nécessite chaque fonctions/
> message...



Up?



Si tu fais clic droit dans VS sur BS_SPLITBUTTON, ça donne
commctrl.h

Et il n'y a rien à faire à part retourner un brush handle sur
WM_CTLCOLORSTATIC. comme
return (LRESULT) GetStockObject(DKGRAY_BRUSH);
Avatar
Maxime
On 23 nov, 23:37, Christian ASTOR wrote:
On 23 nov, 17:57, Maxime wrote:

> > Dans quel header dois-je trouver celà?
> > De plus, pourrais-tu me donner un exemple de code pour la couleur de
> > fond? J'ai du mal à trouver ces que nécessite chaque fonctions/
> > message...
> Up?

Si tu fais clic droit dans VS sur BS_SPLITBUTTON, ça donne
commctrl.h

Et il n'y a rien à faire à part retourner un brush handle sur
WM_CTLCOLORSTATIC. comme
        return (LRESULT) GetStockObject(DKGRAY_BRUSH);



Merci beaucoup, j'arrive à changer le background, mais ne trouve pas
comment changer la couleur du texte... Par ailleurs, je ne trouve
l'endroit de la modification à apporter dans commctrl.h pour le
SPLITBUTTON?
De plus, saurais-tu où se trouve le ID_LISTVIEW? Mon compilateur me
dit qu'il ne le connaît pas... Il s'agit de Code::Blocks.

Merci beaucoup ;)!
Avatar
Christian ASTOR
On 24 nov, 19:14, Maxime wrote:

Merci beaucoup, j'arrive à changer le background, mais ne trouve pas
comment changer la couleur du texte... Par ailleurs, je ne trouve
l'endroit de la modification à apporter dans commctrl.h pour le
SPLITBUTTON?
De plus, saurais-tu où se trouve le ID_LISTVIEW? Mon compilateur me
dit qu'il ne le connaît pas... Il s'agit de Code::Blocks.



Il ne faut pas modifier commctrl.h (!), mais comme il y a :
#if _WIN32_WINNT >= 0x0600
il faut rajouter un #define _WIN32_WINNT qui doit être >= 0x0600 au
début du programme.
Pour le texte d'un Group Box avec Theme, une solution est de poster un
WM_USER dans WM_CTLCOLORSTATIC, où l'on re-dessine par dessus
(SetTextColor()-DrawText())
(sans Theme, SetTextColor() dans WM_CTLCOLORSTATIC suffit)
ID_LISTVIEW n'existe pas par défaut, c'est un ID que tu as créé (dans
un resource.h ou autre)
1 2 3