Oui ok d'accord c'est une méthode.
Mais tu peux utiliser la méthode TRACE il me semble. :wink:
Version imprimable
Oui ok d'accord c'est une méthode.
Mais tu peux utiliser la méthode TRACE il me semble. :wink:
Ben trace tu peux sortir une valeur de variable tu peux accede au contenu du DC en Hexa mais bon c'est plus facile de l'avoir visuellement...
Cela dis je sais pas si tout ça interesse vincebel....
Oui c'est vrai que l'intéressé ne se manifeste pas :D
:DCode:
1
2 AfxMessageBox("Bonne Année Everybody");
ayé je me montre, désolé mais j'avais des partiels en début de semaines donc révisions champagne, révisions décuvage.....
Enfin je suis de retour pour tester tout ce que vous me dites!!
salut ,
et bien commence a relire l'enfilade a partir de ce post :
http://www.developpez.net/forums/vie...560353#1560353
:D
C'est fait!! j'ai bien lu, rlu, ingurgité!!!
Et voilà où j'en suis:
1- le dernier code que tu m'as filé n'affiche rien, le StrectchBlt termine bien par un 1, mais rien a l'écran, mon bouton a toujours sont texte MyButton.
2- j'ai pas trop envie d'utiliser une nouvelle classe pour les boutons mais pourquoi pas.
3- le messageBox ou Trace ne me sert à rien puisque même en affichant qu'une seule image, elle s'affiche toujours dans le dernier controle, quelque soit le i de monBouton[i]
Depuis le début le GW_HWNDLAST me dérange. J'ai essayer de le remplacer par GW-HWNDNEXT ou GW_HWNDNEXT, je change de controle pour l'affichage. Je ne trouve pas comment recupérér le handle sur mon bon controle.
Une idée?
J'ai essayer quelque chose avec ta classe CBtPicture, mais je n'arrive plus a l'inclure a mon projet.
Alors ma question est : faut-il copier tout le contenu (déclaration et implématation du constructeur et de DrawItem) dans un seul fichier *.h ou faire un *;h et un *.cpp? dans les deux cas j'ai des erreurs.
EDIT : C'est con, je me suis déjà servi de ta classe, et ça marchait, mais j'y arrive plus snif
tu remis les coordonnées a zero dans le strectch ?Citation:
Envoyé par vincebel
essaie de recouvrir la fenetre par autre chose pour voir si le paint ne fais pas apparaitre le bitmap.
:D
Bien joué!!! Le problème venait du raffrachissement de la fenetre. J'ai rajouter un invalidate(FALSE) dans la fonction OnPaint et Hop ça marche :)
J'ai par là suite rajouter ma boucle pour afficher sur tout mes boutons (ici 2 pour commencer)
Est-ce que ça te parait propre? (je sais tu préférerais CBtPicture, mais là j'ai plus trop le temps :scarymov: )Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 for(i=0;i<2;i++) { CDC *pBtDC = m_MyButton[i].GetWindowDC(); m_MyButton[i].GetClientRect(&rect); HBITMAP hbt=(HBITMAP)LoadImage(NULL, "c:\\mer.bmp",IMAGE_BITMAP,0,0, LR_DEFAULTSIZE|LR_LOADFROMFILE); Bitmap.Detach(); Bitmap.Attach(hbt); // lecture bitmap dans les ressources BITMAP InfosBmp; // structure d'informations. Bitmap.GetBitmap(&InfosBmp); MemDC.DeleteDC(); MemDC.CreateCompatibleDC(pBtDC);// creation d'un DC en memoire MemDC.SelectObject(&Bitmap); // selection du bitmap dans le DC en memoire BOOL oooo=pBtDC->StretchBlt( 0, 0, rect.Width(),rect.Height(), &MemDC, 0, 0, InfosBmp.bmWidth, InfosBmp.bmHeight, SRCCOPY); m_MyButton[i].ReleaseDC(pBtDC); } Invalidate(FALSE);
salut,
pour eviter de prendre trop de temps sur le paint il faudrait que les bitmaps soient chargés avant .
dans le paint on ne doit faire que l'affichage.
voili
:D
Comme je les affiche dans une boite de dialogue, je peux les charger dans la fonction OnInitialUpdate. Je peux déclarer un tableau dynamique de CDC ou je stockerai les MemDC, et les afficher dans le OnPaint?
Je pense que c'est faisable, mais ça va devenir lourd en tableau dynamique :D :D
A propos de tableau dynamique, j'ai une question:
Comme je ne sais pas au préalable combien j'ai d'image à afficher (je connais juste la maxi : 6), et comme j'affiche mes images dans des CStatic ( ou CButton, c pareil), je dois déclarer dynamiquement le tableau. Voilà ce que je voulais faire :
dans le *.h :
et dans le constructeur de la boite dialogue :Code:CStatic *m_MyButton;
Le problème, c'est que le constructeur de CStatic ou de CButton, ne prend pas mon paramètre 2.Code:m_MyButton = new CStatic(2);
Une solution?
re,
utilise un CArray .
apres ça s'utilise comme un tableau de pointeur de CStatic .Code:
1
2
3
4
5
6
7 // dans le .h CArray<CStatic * ,CStatic *> m_apStatics; CStatic *pMyButton= new CStatic ; m_apStatics.Add(pMyButton); // etc...
voir MSDN pour les autres fonctions de la classe.
il faut mettre #include <afxtempl.h> dans stdafx.h
:D
ok ok, je vais voir ça, mais pas aujourd'hui, j'ai un rapporta rendre avant de me plonger dans les CArray, je vais d'abord déclarer en statique.
Sinon pour la manière de charger les images et de les afficher, un tableau de CDC en variable membre te parait bon?
Finalement non, c pas une bonne idée, il me manqueras d'autres paramètres pour la fonction stretchBlt.
j'essaierai ce soir.
En tout cas, merci, merci, et encore merci.
Bon, étant donné que j'arrive a affichier le nombre d'iamge que je veux, je considère mon problème comme résolu. Je creuserait le CArray et le chargement de l'image en amont du OnPaint plus tard, et je reviendrait te poser des questions :D :D
en tout cas merci pour tout