IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MFC] Fond d'une boite de dlg transparente


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 92
    Par défaut [MFC] Fond d'une boite de dlg transparente
    Bonjour,

    J'utilise VC++6.0 et je voudrais qu'une partie de ma boite de dlg (ou frame) soit transprente, comment peut-on faire cela?

    Il faut copier l'arrière plan et le redessiner ou peut-on utiliser un pinceau avec des attribut de transparence, ou, y a t'il une autre solution?

    Merci de votre aide.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    Pour disposer du mode transparent disponible a partir de win2000:
    (Attention: sous visual 6.0 il faut avoir le sdk a jour .)

    - Définir #define _WIN32_WINNT 0x0500 dans stdafx.h
    - Rajouter le style etendu WS_EX_LAYERED a la dialog.
    - Intercepter le message CtlColor au niveau de la dialogue et fournir une brosse (solid brush) pour la couleur de transparence.
    - Appeler l'api32 SetLayeredWindowAttributes dans OnInitDialog .

    aprés voir la doc MSDN pour les options.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    BOOL CAboutDlg::OnInitDialog() 
    {
    	CDialog::OnInitDialog();
     
    	// TODO: Add extra initialization here
     
    	m_pBrush= new CBrush;
    	m_pBrush->CreateSolidBrush(RGB(187,221,255));
     
    	ModifyStyleEx(0,WS_EX_LAYERED);
    	SetLayeredWindowAttributes(m_hWnd,RGB(187,221,255),180,LWA_ALPHA);
     
    	return TRUE;  // return TRUE unless you set the focus to a control
    	              // EXCEPTION: OCX Property Pages should return FALSE
    }
     
    HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    //	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
     
    	// TODO: Change any attributes of the DC here
     
    	// TODO: Return a different brush if the default is not desired
    	return static_cast<HBRUSH>(*m_pBrush);
    	//return hbr;
    }

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/01/2006, 16h13
  2. [MFC] Dessin dans une boite de dialogue .
    Par Platypus dans le forum MFC
    Réponses: 8
    Dernier message: 21/07/2005, 11h21
  3. Réponses: 10
    Dernier message: 21/04/2005, 10h00
  4. [mfc] affichage dans une boite de dialog
    Par chronos dans le forum MFC
    Réponses: 3
    Dernier message: 14/06/2004, 15h12
  5. [MFC] Impression d'une boite dialogue
    Par mick74 dans le forum MFC
    Réponses: 5
    Dernier message: 03/06/2004, 10h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo