[C++] Win32 boutons image et image de fond

Win32 boutons image et image de fond [C++] - C++ - Programmation

Marsh Posté le 14-11-2003 à 14:22:10    

Bonjour,
 
J'ai plusieurs questions concernant un projet réalisé avec Visual C++ a partir d'une boite de dialoque. Je cherche a inserer une image comme fond de ma boite de dialogue. Y a t'il un moyen de le faire directement ou est ce qu'il faut placer un objet picture? La qualité de l'image est dégradée pk'elle passe en 256 couleurs. Y a t'il un moyen d'utiliser des images en couleur vraie?
 
Je voudrais aussi inserer des images dans mes boutons. Comme faut t'il s'y prendre?
 
Merci d'avances pour vos reponses.

Reply

Marsh Posté le 14-11-2003 à 14:22:10   

Reply

Marsh Posté le 14-11-2003 à 14:47:03    

Tu places un CBitmapButton sur ta Dialog, dans la fonction OnInitDialg() de ta Dialog tu appelles la fonction LoadBitmaps() de ton CBitmapButton avec l'image que tu veux afficher, et tu appelles ensuite la fonction SizeToContent() du CBitmapButton pour que l'image remplisse le bouton.

Reply

Marsh Posté le 14-11-2003 à 14:50:56    

C pas du MFC ca??? J'aimerais bien faire du win 32 basique...


Message édité par Piemur2000 le 14-11-2003 à 14:51:23
Reply

Marsh Posté le 14-11-2003 à 15:30:29    

Tu insères ton image dans un fichier de ressources (rc), tu utilises ensuite LoadBitmap() pour charger ton image à partir de ton fichier de ressources et tu envoies un message BM_SETIMAGE au bouton.
 
Exemple :

Code :
  1. image = LoadBitmap(hInstance,"ID_BOUTON" );
  2. SendMessage(hBouton, BM_SETIMAGE, 0 (LPARAM) (HANDLE) image);


ou "hBouton" est le handle de ton bouton.

Reply

Marsh Posté le 14-11-2003 à 16:51:53    

et pour l'image de fond, en général je rajoutes un truc de ce genre dans le handler WM_PAINT :
 

Code :
  1. PAINTSTRUCT ps;
  2. BeginPaint(&ps);
  3. HDC hdcMem = CreateCompatibleDC(ps.hdc);
  4. HBITMAP OldBitmap = (HBITMAP)SelectObject(hdcMem, hBmpDeTonImage);
  5. BitBlt(ps.hdc,
  6.  ps.rcPaint.left,
  7.  ps.rcPaint.top,
  8.  ps.rcPaint.right - ps.rcPaint.left,
  9.  ps.rcPaint.bottom - ps.rcPaint.top,
  10.  hdcMem,
  11.  ps.rcPaint.left, ps.rcPaint.top,
  12.  SRCCOPY);
  13. if (OldBitmap)
  14. SelectObject(hdcMem, OldBitmap);
  15. DeleteDC(hdcMem);
  16. EndPaint(&ps);
  17. return ::DefWindowProc(m_hWnd, uMsg, wParam, lParam);

Reply

Marsh Posté le 16-11-2003 à 20:02:45    

Le code pour la fenetre fonctionne tres bien merci. Mais j'ai essayé pour le boutton et g un petit probleme : comment on fait pour recuperer le hbutton?


Message édité par Piemur2000 le 16-11-2003 à 20:06:19
Reply

Marsh Posté le 16-11-2003 à 21:54:18    

GetDlgItem()


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 16-11-2003 à 22:44:35    

Merci c bon ca finctionne.  :jap:  :jap:  
 
Au fait y'a pas moyen de mettre une image autre que en 256 couleurs? Pke la c vraiment pas super bo...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed