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 :

Afficher une image dans ma boite de dialogue + Toolbar


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Par défaut Afficher une image dans ma boite de dialogue + Toolbar
    Bonjour, je travaille sur Visual Studio, sur un projet MFC.
    Je souhaiterais savoir s'il était possible (si oui, comment ?)
    de charger une image dans une partie de ma boite de dialogue, via un filedialog. Je m'explique,
    je clique sur mon bouton parcourir de ma boite de dialogue, je choisis l'image, puis elle apparait dans une zone définie par moi (je pense que je dois utiliser les "Picture Control".
    Je voudrais savoir aussi comment ajouter une ToolBar, j'ai crée pour cela une ressource Toolbar, et j'ai dans mon .cpp, créer un objet de la classe ToolBar, je l'ai "attacher", puis "loader", mais quand je compile, elle n'apparait pas sur ma
    boite de dialogue.
    Merci d'avance de vos réponses.

  2. #2
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Si tu veux une application avec une barre d'outils sur une boite de dialog il est plus simple de générer un petit projet SDI avec une vue de type CFormview.

    Pour l'affichage des images ce code peu te guider.
    Dans le PictureViewer.h
    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
     
    class CPictureViewer : public CStatic
    		{
    			DECLARE_DYNAMIC(CPictureViewer)
     
    		public:
    			CPictureViewer();
    			virtual ~CPictureViewer();
     
    			HRESULT LoadImage(LPCTSTR pszFilename);  // une fonction d'aide
    			CImage& GetImage() { return m_Image; }		// retourne une référence sur CImage
     
    			void UnloadImage();
     
    		protected:
    			CImage m_Image;							// membre protégé
     
    		protected:
    			DECLARE_MESSAGE_MAP()
    		public:
    			afx_msg void OnPaint();
    		};
    Dans le PictureViewer.cpp
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
     
    #include <afxstr.h>      // il faut inclure <atlstr.h> pour un projet ATL 
    #include <atlimage.h>
    #include "PictureViewer.h"
     
    #include <comdef.h> // pour la définition de "_com_error"
     
    // CPictureViewer
     
    IMPLEMENT_DYNAMIC(CPictureViewer, CStatic)
     
    CPictureViewer::CPictureViewer()
    {
     
    }
     
    CPictureViewer::~CPictureViewer()
    {
    }
     
     
    BEGIN_MESSAGE_MAP(CPictureViewer, CStatic)
    	ON_WM_PAINT()
    END_MESSAGE_MAP()
     
    HRESULT CPictureViewer::LoadImage(LPCTSTR pszFilename)
    {
    	m_Image.Destroy();			// je détruis l'image précédente si il y a lieu
    	HRESULT hr = m_Image.Load(pszFilename); // je charge l'image à partir de son path complet
    	if (FAILED(hr)) 
    	{
    		CString fmt;
    		fmt.Format("Load image failed:\n%x - %s", hr, _com_error(hr).ErrorMessage());
    		::AfxMessageBox(fmt);
    	}
    	InvalidateRect(0);
     
    	return hr;
    }
     
     
    // CPictureViewer message handlers
     
    void CPictureViewer::OnPaint()
    {
    	CPaintDC dc(this); 
    	CRect rctWindowSize; 
    	GetClientRect(rctWindowSize);  // j'obtient le rectangle de mon Picture contrôle
     
    	if (!m_Image.IsNull()) // l'image est-elle chargée
    	{	// je copie les bits de mon image sur le dc avec possibilité de compression avec StretchBlt()
    		m_Image.StretchBlt(dc, 0, 0, rctWindowSize.Width(), rctWindowSize.Height(), SRCCOPY);
    	}
    	else
    	{
    		CBrush* pOldBrush = (CBrush*) dc.SelectStockObject(WHITE_BRUSH);
    		dc.Rectangle(rctWindowSize);
    		dc.SelectObject(pOldBrush);
    	}
    }
     
    void CPictureViewer::UnloadImage()
    {
    	m_Image.Destroy();
    	InvalidateRect(0);
    }
    Déclarer dans une classe d'une boite de dialogue ou formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class CYourDlg : public CDialog
    {
    //...
    protected:
           CPictureViewer m_AppBannerCtrl;
    //...
    };
    Dans DoDataExchange
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void CYourDlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	DDX_Control(pDX, IDC_APP_BANNER_STATIC, m_AppBannerCtrl);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    BOOL CYourDlg::OnInitDialog()
    {
    	CWaitCursor cursor;
                 CDialog::OnInitDialog();
                 //...
    	m_AppBannerCtrl.LoadImage("C:\\mon image.jpg");
    	//...
     
    	return TRUE;
    }
    NB: Version > VC 6.0

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Par défaut
    Et bien, merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher une image dans un état
    Par Invité1 dans le forum IHM
    Réponses: 8
    Dernier message: 23/09/2009, 14h59
  2. [MFC]Afficher une image dans un Picture
    Par Cirdan Telemnar dans le forum MFC
    Réponses: 3
    Dernier message: 24/04/2006, 16h40
  3. comment afficher une image dans un jpanel ?
    Par 180degrés dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 18/04/2006, 15h33
  4. Afficher une image dans un état
    Par louis_figos dans le forum IHM
    Réponses: 5
    Dernier message: 09/03/2006, 11h09
  5. Besoin d'aide pour afficher une image dans un applet
    Par argon dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 19/01/2006, 19h45

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