Question de Newbie sur les MFC

Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020 - 24 janv. 2007 à 14:22
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 25 janv. 2007 à 19:25
Bonjour à tous,

Je début en MFC et j'ai quelques questions de newbie !

Tout d'abord je developpe sous Vsual Studio 2005 Pro.

1) Est il possible d'insérer "simplement" dans une boite de dialogue une image JPG ou PNG ( je sais utiliser BMP)

2) Je souhaiterais ensuite changer la couleur de fond de ma boite de dialogue ( car quand j'insere des BMP, on voit une différence comme je ne peut pas insérer des png transparent ! ), et j'ai trouvé un code aparemment cela:

 CWinApp::SetDialogBkColorvoid SetDialogBkColor( COLORREF clrCtlBk RGB(192, 192, 192), COLORREF clrCtlText RGB(0, 0, 0) );

Je voulais déja savoir si c'est cette méthode à utiliser pour changer la couleur de fond de mes fenetres, ensuite, si il y avais plus simple, et ensuite ou utiliser cette procedure !!

Dans InitDialog?

Désolé de mes question de newbie, mais je suis perdu, je pensais les MFC plus simple que cela !

Je vous remercie tous pour votre aide et vous souhaite une bonne journée

10 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
24 janv. 2007 à 15:12
En GDI+ tous les formats sont reconnus par le type Image :

Image img(L"unFichier.jpg");

Pour la couleur de fond du dialog, tu peux utiliser le message WM_ERASEBKGND en surchargeant la méthode :
afx_msgBOOLOnEraseBkgnd(CDC*[ pDC]);
Dans la classe de ton dialog.

Ou afficher directement l'image depuis eraseBackground ou onPaint :

VOID Example_DrawImage(CDC* pDC)
{
   Graphics panel(pDC->m_hDC);
   Image image(L"unFichier.jpg");

   Point destPoints[2] = {/* points de destination */};
   Point* pdestPoints = destPoints;

   panel.DrawImage(&image, pdestPoints, 2);
}
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
24 janv. 2007 à 15:24
Si tu n'utilises pas GDI_plus, il faut utiliser CImage (ATL) qui fournit tous les formats.

Ou transparence avec bitmap sur l'anciène méthode de bitblt() avec les flags
SRCRAND avec un masque et
SRCINVERT avec l'image.
0
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
24 janv. 2007 à 15:25
Merci, je cherche je cherche, car je suis perdu à l'ouest !
En plus je viens de migrer de VS6 vers VS 2005 !

C'est changer de couleur de fond de boite de dialogue que je cherche, pas simple je trouve.

Merci quand meme, je vous tiens au courant.
0
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
24 janv. 2007 à 15:52
Je viens de cherche un peu comment faire et je ne comprend pas grande chose :(
Je suis étonné de voir que le c++ est si compliqué par rapport a Delphi !

Je cherche juste comment changer la couleur de fond de mon appli ( la couleur sera la même pour tout mon projet )

J'ai en effet compris qu'il fallais passer par le message WM_ERASEBKGND ,cela dit, je ne vois pas comment l'utiliser dans Visual Studio 2005 et je n'y arrive pas !

Merci encore
0

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

Posez votre question
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
24 janv. 2007 à 16:43
Cliques sur la classe de ta boite de dlg dans le volet de droite, puis click sur propriété ou ajout de msg, tu as la liste des msg, tu cliques sur celui que tu veux et la méthode afx_msg On_quelquechose() est rajoutée dans le code .h et .cpp
Tu n'as plus qu'à écrire le code.
0
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
24 janv. 2007 à 19:12
Je vais chercher, car je savais faire cette manip ( accéder aux messages ) avec Visual Studio 6, mais ca n'est plus pareil dans VS2005 ! :(
0
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
24 janv. 2007 à 19:24
Bon, j'avance :)

J'ai trouvé dans un tuto sur les mfc ceci : On me dit qu'afin de changer la couleur de fond de ma boite de dialogue, je doit placer ceci dans mon initinstance()

SetDialogBkColor(RGB(10, 120, 19), RGB(19, 192, 0));

--> Ce que je fais, je n'ai aucune erreur de compilation, mais cela ne change rien :(
0
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
25 janv. 2007 à 15:06
Une idée ?:(
0
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
25 janv. 2007 à 15:10
Pas d'idée ? :(
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
25 janv. 2007 à 19:25
Ce ne serait pas plutot dans InitDialog à la place de initInstance, parceque là je ne vois pas le rapport avec l'instance CWinApp.
A mon avis tout ce fait dans la classe de ta boite de dialog.
Quel projet as tu lancé ? SDI, MDI, dialog based ?
Autre chose d'importance, codes tu en native c++ ou en cli .net ?
0
Rejoignez-nous