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 :

Problème pour afficher une image bmp


Sujet :

MFC

  1. #1
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut Problème pour afficher une image bmp
    Bonjour,

    Dans le cadre d'un projet en traitement d'images, je me dois evidemment d'afficher cette image puis par la suite d'effectuer des opérations dessus.
    Apres plusieurs recherches, j'ai oté pour ce code qui me parait le plus adéquate dans mon cas. Une boite de dialogue avec l'exporer apparait et me permet de sélectionner l'image bmp à afficher.
    MAIS voici le probleme, à quoi corresponds exactement le paramètre IDC_VIEWER dans la ligne suivante?
    CWnd * hWndViewer = this->GetDlgItem(IDC_VIEWER);
    J'ai pensé que IDC_VIEWER était l'indentifieur du control correspondant au chemin d'accés sélectionné pour l'ouverture de l'image. Est ce bien cela?
    Mon probleme est de retrouver l'identificateur exact du control vu que la création de la boite de dialogue se fait automatiquement par simple code.

    Je vous envoie le code afin que cela soit peut être plus explicite :
    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
     
    void CEssaiView::OnNouvelleimageOpen() 
    {
     
      // szFilters is a text string that includes two file name filters: 
      // "*.bmp" for "Bitmap Files" and "*.*' for "All Files." 
      char szFilters[]= "MyType Files (*.bmp)|*.bmp|All Files (*.*)|*.*||"; 
     
      // Create an Open dialog; 
      // the default file name extension is ".bmp". 
      CFileDialog fileDlg (TRUE, "", "*.bmp",   OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this); 
     
      // Display the file dialog. When user clicks OK, 
      // Display the bitmap in picture control of my dialog box 
      if( fileDlg.DoModal ()==IDOK ) 
      { 
        CString pathName = fileDlg.GetPathName(); 
     
    	// Implement opening and reading file in here. 
    	// Get handle on picture control window 
    	CWnd * hWndViewer = this->GetDlgItem(IDC_VIEWER); 
    	//ou CStatic * hWndViewer = (CStatic*) GetDlgItem(IDC_VIEWER);
     
    	// Load the bitmap 
    	HBITMAP hBitmap = (HBITMAP) LoadImage( 0, 
    	pathName, 
    	IMAGE_BITMAP, 
    	0,0, 
    	LR_LOADFROMFILE | 
    	LR_LOADMAP3DCOLORS | 
    	LR_SHARED ); 
     
    	//hWndViewer->SetBitmap(hBitmap);
    	// Associate picture to the control 
    	hWndViewer->SendMessage( STM_SETIMAGE, 
    	(WPARAM) IMAGE_BITMAP, 
    	(LPARAM) hBitmap ); 
     
    	//Change the window's title to the opened file's title. 
    	CString fileName = fileDlg.GetFileTitle (); 
     
    	SetWindowText(fileName);	
    	}
      return; 
    }
    Je vous remercie par avance de votre aide et j'espère que vous pourrez y remedier.

    Bonne journée

    Nicolas
    [Attention à la balise de code ,Merci Farcape]

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    IDC_VIEWER correspond a l'identifiant du static situé dans ta dialogue .
    tu recuperes un pointeur de fenetre dessus pour lui envoyé un message pour lui attaché la nouvelle image.

  3. #3
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Merci pour votre réponse, ca confirme bien ce que je pensais. ;o) Ca me rassure un peu! sourire

    En fait, je crée une open dialog avec le code suivant :
    CFileDialog fileDlg (TRUE, "", "*.bmp", OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);
    Dans ce cas, comment fait on pour retrouver l'identifiant du static afin de le changer ou de le faire correspondre à la place de IDC_VIEWER? En effet, je ne crée pas moi meme la boite de dialogue donc je ne sais par quel moyen accéder à ces informations.
    Vous voyez ce que je veux dire?

    Franchement, c'est abusé car je prends de votre temps pour surement quelque chose qui doit etre plutot simple mais je bug...

    Bonne journée.

    Nicolas

  4. #4
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par homeostasie
    Merci pour votre réponse, ca confirme bien ce que je pensais. ;o) Ca me rassure un peu! sourire

    En fait, je crée une open dialog avec le code suivant :
    CFileDialog fileDlg (TRUE, "", "*.bmp", OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);
    Dans ce cas, comment fait on pour retrouver l'identifiant du static afin de le changer ou de le faire correspondre à la place de IDC_VIEWER? En effet, je ne crée pas moi meme la boite de dialogue donc je ne sais par quel moyen accéder à ces informations.
    Vous voyez ce que je veux dire?

    Franchement, c'est abusé car je prends de votre temps pour surement quelque chose qui doit etre plutot simple mais je bug...

    Bonne journée.

    Nicolas
    non désolé je comprends pas.
    de quelle boite de dialogue il est question ?
    la CFileDialog ou autre chose ?
    le code que tu as montré fais le boulot est le probleme ?


  5. #5
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    En fait, voici l'erreur que j'obtiens lorsqueje compile ce code :
    error C2065: 'IDC_VIEWER' : undeclared identifier

    POur cette raison, j'ai passé du temps à comprendre ce que representait cet identifiant p/r rapport au code sans réussir à le faire tourner...

    Peut être avez vous la solution à cela? Ca m'interesserais vraiment.

    Autre chose, vu que je n'arrivais pas à corriger cette erreur, j'ai fait appel à une classe trouvée sur le net : CPicture. Enfin j'arrive à afficher mon image mais je suis à nouveau confronté à un bug. Des que j'agrandis ou diminue la fenetre de l'image, hop elle disparait. Pensez vous que la fonction UpdateAllViews(NULL) peut remédier à cela ou c'est tout autre chose?

    en tout cas merci de me repondre si rapidement.

    A nouveau bonne journée, quoique bonne soirée sera bientot plus approprié.

    Nicolas

  6. #6
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par homeostasie
    En fait, voici l'erreur que j'obtiens lorsqueje compile ce code :
    error C2065: 'IDC_VIEWER' : undeclared identifier

    POur cette raison, j'ai passé du temps à comprendre ce que representait cet identifiant p/r rapport au code sans réussir à le faire tourner...

    Peut être avez vous la solution à cela? Ca m'interesserais vraiment.

    Autre chose, vu que je n'arrivais pas à corriger cette erreur, j'ai fait appel à une classe trouvée sur le net : CPicture. Enfin j'arrive à afficher mon image mais je suis à nouveau confronté à un bug. Des que j'agrandis ou diminue la fenetre de l'image, hop elle disparait. Pensez vous que la fonction UpdateAllViews(NULL) peut remédier à cela ou c'est tout autre chose?

    en tout cas merci de me repondre si rapidement.

    A nouveau bonne journée, quoique bonne soirée sera bientot plus approprié.

    Nicolas
    cet identifiant est bien présent dans tes ressouces ?
    si oui ,
    il te manque juste l'include de ta classe d'application (la classe dérivée de CWinApp) .
    qui contient elle même l'include "resource.h" ou est definit cet identifiant.
    si ton but est d'afficher une image dans une view ou scrollview je te recommande ce lien sur le site de codeguru:
    http://www.codeguru.com/Cpp/G-M/bitmap/article.php/c4903/
    qui utilise la classe CPicture .

  7. #7
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Cet identifiant n'est pas présent dans mes ressources.
    Voici ce que j'ai dans le fichier ressources.h :
    //{{NO_DEPENDENCIES}}
    // Microsoft Developer Studio generated include file.
    // Used by essai.rc
    //
    #define IDD_ABOUTBOX 100
    #define IDD_SAISIEDLG_DIALOG 102
    #define IDR_MAINFRAME 128
    #define IDR_ESSAITYPE 129
    #define ID_NOUVELLEIMAGE_OPEN 32771

    // Next default values for new objects
    //
    #ifdef APSTUDIO_INVOKED
    #ifndef APSTUDIO_READONLY_SYMBOLS
    #define _APS_3D_CONTROLS 1
    #define _APS_NEXT_RESOURCE_VALUE 130
    #define _APS_NEXT_COMMAND_VALUE 32772
    #define _APS_NEXT_CONTROL_VALUE 1001
    #define _APS_NEXT_SYMED_VALUE 103
    #endif
    #endif

    En fait, l'IDC_VIEWER, je dois le définir ou il devrait y être, peut être sous un autre nom?!

    Enfin je ne vais pas non plus trop vous embeter avec cela, il est vrai que j'aurrais bien apprécié réussir a faire fonctionner ce code très plaisant. Il m'évitait d'inclure la classe CPicture...

    Sinon, pour le lien que vous m'avez fourni, je vous remercie, en fait je l'ai vu tout à l'heure dans un autre message du forum. Cette fois, je peux enfin afficher mon image, une bonne petite classe facile à metre en oeuvre.

    Bonne soirée.

    Nicolas

Discussions similaires

  1. Problème pour afficher une image
    Par malbaladejo dans le forum Silverlight
    Réponses: 6
    Dernier message: 25/11/2008, 16h43
  2. [MySQL] Problème pour afficher une image dont le chemin est stocké dans la bdd
    Par cel.Saint-Louis dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2007, 08h49
  3. [AJAX] Afficher une image GD avec ajax
    Par darkvodka dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/06/2007, 00h43
  4. [MFC]Problème pour afficher une image.
    Par Deedier dans le forum MFC
    Réponses: 4
    Dernier message: 25/03/2005, 16h13
  5. Réponses: 13
    Dernier message: 23/12/2004, 18h01

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