Rendre transparent le fond d'un CEdit

Rendre transparent le fond d'un CEdit - C++ - Programmation

Marsh Posté le 21-09-2008 à 19:40:23    

salut à tous,
 
Je cherche à rendre transparent un CEdit (j'utilise VisualC++ 2008). Pour ça, j'ai vu qu'il fallait utiliser la fonction SetBkColor mais je ne sais pas intercepter le message WM_CTLCOLOR à destination du CEdit!!!!
 
voici le code dans la fonction OnCtlColor de la boite de dialogue principale dans laquelle il y a le CEdit :
 

Code :
  1. HBRUSH CIhmPrincipal::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  2. {
  3. HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  4. if (pDC == this->GetDlgItem(IDC_TEST)->GetDC())
  5. {
  6.  TRACE("OnCtrlColor de l'edit \n" );
  7. }
  8. // TODO:  Change any attributes of the DC here
  9. // TODO:  Return a different brush if the default is not desired
  10. return hbr;
  11. }


 
=> je ne rentre jamaisdans la condition if!!
Comme vous pouvez l'imaginer je suis pas un pro...  
 
Si quelqu'un peut m'aider!!!!!
 
Merci d'avance


Message édité par cyte le 22-09-2008 à 11:47:11
Reply

Marsh Posté le 21-09-2008 à 19:40:23   

Reply

Marsh Posté le 22-09-2008 à 17:32:16    

personne n'a une petite idée...????

Reply

Marsh Posté le 23-09-2008 à 11:22:22    

Tu t'y prends mal, au lieu de tester le HDC, teste le contrôle en lui-même (son HWND) :
 

Code :
  1. if(pWnd == this->GetDlgItem(IDC_TEST)) {
  2.    // todo
  3.    TRACE("OnCtrlColor de l'edit n" );
  4. }


Je ne te garantis rien car je ne suis pas expert en MFC !


Message édité par antsite le 23-09-2008 à 11:24:00
Reply

Marsh Posté le 23-09-2008 à 12:21:28    

pas mieux!!! Mais merci tout de même d'avoir essayer de m'aider!!  
 
la fonction OnCtrlColor() de la fenêtre principale est appelée pour chaque élément inclus dans cette fenêtre?

Reply

Marsh Posté le 23-09-2008 à 12:47:11    

http://msdn.microsoft.com/en-us/li [...] S.80).aspx
 
Inspire-toi de l'exemple, tu nous diras si ca marche mieux avec
if(pWnd->GetDlgCtrlID() == IDC_TEST)
 
Je suis dubitatif.

Reply

Marsh Posté le 23-09-2008 à 13:12:21    

ça marche mieux!!!! Je te connais pas mais t'es un chef!!!
Je dois retourner au boulot; ce soir j'essaie d'implémenter la fonction qui va rendre tranparent le fond du CEdit.
 
Je te tiens au courant!!

Reply

Marsh Posté le 23-09-2008 à 13:28:32    

pas de souci  ;)  
 
:calimero:

Reply

Marsh Posté le 23-09-2008 à 16:53:28    

j'ai repris l'exemple de msdn comme envoyé dans le lien mais ça ne marche pas trop.
 
Contrairement à l'exemple, je n'ai pas défini de variable membre du type CBrush. Je vais l'ajouter mais je ne vois pas trop l'impact...

Reply

Marsh Posté le 23-09-2008 à 16:56:05    

ah si, ça marche nickel.......
J'ai encorebeaucoup de lacunes en MFC!!!!!!!!!!
 
Encore merci pour tout!

Reply

Marsh Posté le 23-09-2008 à 16:58:38    

et zut....
 
Autre soucis : fond transparent = fond de couleur du fond de la boite de dialogue parent à priori!!! Donc si le CEdit est au dessus d'une image bitmap de couleur verte par exemple, ce CEdit n'est plus tranparent...

Reply

Marsh Posté le 23-09-2008 à 16:58:38   

Reply

Marsh Posté le 23-09-2008 à 17:30:06    

ça marche en ajoutant :
m_brush.CreateStockObject(HOLLOW_BRUSH);
 
voilà...

Reply

Sujets relatifs:

Leave a Replay

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