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 :

Trace de courbe (MFC) dans une ListBox ss Vc++ 6


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Points : 56
    Points
    56
    Par défaut Trace de courbe (MFC) dans une ListBox ss Vc++ 6
    Bonjour,

    j'affiche dans une ListBox des valeurs, ces valeurs je veux les mettre sous forme d'une courbe y = f(x) . d'1 clic sur la listbox je veux alterner soit les valeurs soit la courbe.

    Est-ce que quelqu'un a 1 idée ?

  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,
    le mieux est de faire un contrôle bouton owner draw de la même dimension que ta listbox.
    au debut il est invisible (ShowWindow(SW_HIDE)) et inactif (EnableWindow(FALSE)).
    quand tu clic sur la lisbox tu le passe actif et visible.
    dans la classe dérivé du bouton quand tu clics dessus tu mets le bouton inactif et invisible.
    pour la technique de dessin dans un contrôle voir cet exemple :
    http://farscape.developpez.com/Samples/TestGraph.zip

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    Bon j'ai regardé ton exemple, seulement voila je n'arrive pas à relier mon bouton CButton à la classe CGraphique que tu a defini dans graphique.cpp et graphique.h

    En effet dans l'editeur de ressource quand je veux ajouter une variable membre à ce control je n'ai que la possibilité de la relier qu'a CButton.

    Or dans graphique.cpp il y a la fonction

    DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)

    Je ne peux pas y acceder alors j'ai créé par programme un CGraphique
    mais voila comment t'initailise lpDrawItemStruct

    Voila ce que j'ai ecris.

    CButton *courbe = (CButton *) GetDlgItem(IDC_BUTTON_COURBE);
    LPDRAWITEMSTRUCT lpDrawItemStruct;

    courbe->DrawItem(lpDrawItemStruct);

  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
    tu laisses faire l'ide sur la classe CButton et tu changes manuellement le nom de la classe dans le .h de ta fenêtre...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    c'est ce que j'ai fait et qd je compile il me marque :

    Compiling...
    CineTrans.cpp
    c:\work_bp\applis windows\cinetrans\cinetransdlg.h(50) : error C2146: syntax error : missing ';' before identifier 'm_courbe'
    c:\work_bp\applis windows\cinetrans\cinetransdlg.h(50) : error C2501: 'CGraphique' : missing storage-class or type specifiers
    c:\work_bp\applis windows\cinetrans\cinetransdlg.h(50) : error C2501: 'm_courbe' : missing storage-class or type specifiers
    CineTransDlg.cpp


    Voici une parti du source du .h

    // Dialog Data
    //{{AFX_DATA(CCineTransDlg)
    enum { IDD = IDD_CINETRANS_DIALOG };
    CGraphique m_courbe;
    CButton m_Ctrl_Menu_Prog;
    CStatic m_Ctrl_Static_Erase;
    CStatic m_Ctrl_Static_Prog;
    CStatic m_Ctrl_Static_Ver;
    CButton m_Ctrl_Program;
    CButton m_Ctrl_Verify;
    CButton m_Ctrl_Erase;
    CListBox m_Ctrl_Memoire_File;
    CString m_Str_Static_Ver;
    CString m_Str_Static_Prog;
    CString m_Str_Static_Erase;
    //}}AFX_DATA

    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CCineTransDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
    //}}AFX_VIRTUAL

    J'ai remplacé CButton de m_courbe par CGraphique et voila les erreurs

  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
    ben tu as oublié de mettre l'include de CGraphique dans ton source (.cpp) au dessus de celui de la fenêtre ....

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    Je n'comprend pas je vient de le faire et ça me met tjrs l'erreur.

    Dans mon fichier CineTransDlg.cpp

    #include "stdafx.h"
    #include "Graphique.h"
    #include "CineTrans.h"
    #include "CineTransDlg.h"
    #include "Program.h"

    ....

    t'as une idee de ce que c'est ?

  8. #8
    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
    a mon avis ce n'est pas le même source ...
    tu dois avoir cet include dans tous les sources qui incluent la fenêtre contenant le contrôle .
    comme CineTrans.cpp et CineTransDlg.cpp ....

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    Je ne comprend plus je ne peux plus revenir en arrière comme si ça m'avait bousillé mon programme voila ce qui me met comme erreur.
    Il en reconnait plus ma fenêtre


    Compiling...
    CineTransDlg.cpp
    graphique.cpp
    c:\work_bp\applis windows\cinetrans\cinetransdlg.h(50) : error C2065: 'IDD_CINETRANS_DIALOG' : undeclared identifier
    c:\work_bp\applis windows\cinetrans\cinetransdlg.h(50) : error C2057: expected constant expression
    Generating Code...
    Compiling...
    CineTrans.cpp
    C:\work_bp\Applis Windows\CineTrans\CineTransDlg.cpp(1128) : warning C4700: local variable 'lpDrawItemStruct' used without having been initialized
    Generating Code...
    Skipping... (no relevant changes detected)
    Contact.cpp
    Program.cpp
    RVB.cpp
    Error executing cl.exe.

    CineTrans.exe - 2 error(s), 1 warning(s)


    source :

    // Dialog Data
    //{{AFX_DATA(CCineTransDlg)
    enum { IDD = IDD_CINETRANS_DIALOG };
    CButton m_courbe;
    CButton m_Ctrl_Menu_Prog;
    CStatic m_Ctrl_Static_Erase;
    CStatic m_Ctrl_Static_Prog;
    CStatic m_Ctrl_Static_Ver;
    CButton m_Ctrl_Program;
    CButton m_Ctrl_Verify;
    CButton m_Ctrl_Erase;
    CListBox m_Ctrl_Memoire_File;
    CString m_Str_Static_Ver;
    CString m_Str_Static_Prog;
    CString m_Str_Static_Erase;
    //}}AFX_DATA

    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CCineTransDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
    //}}AFX_VIRTUAL

  10. #10
    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
    montre moi l'ordre de tes includes dans CineTransDlg.cpp

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    #include "stdafx.h"
    //#include "Graphique.h"
    #include "resource.h"
    #include "CineTrans.h"
    #include "CineTransDlg.h"
    #include "Program.h"
    #include "general.h"
    #include "Memoire_File.h"
    #include "Hex2Bin.h"
    #include "resource.h"
    #include "LoadProgress.h"
    #include "CTpCtrl.h"
    #include "Contact.h"
    //#include "MDIColorView.h"
    //#include "MDIColorViewDoc.h"
    //#include "MDIColorViewView.h"
    #include "HtmlHelp.h"
    #include "Mire.h"
    #include "bin2hex.h"
    #include "RVB.h"
    #include "gamma.h"

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif

    #include <string.h>
    #include <Afxwin.h>
    #include <wingdi.h>
    #include <afx.h>
    #include <ctype.h>
    #include <stdlib.h>
    #include <stdafx.h>
    #include <richedit.h>
    #include <winuser.h>
    #include <process.h>
    #include <stdio.h>
    #include <winbase.h>
    #include <windowsx.h>
    #include <MAPIDEFS.H>
    #include <afxdlgs.h>
    #include <io.h>
    #include <memory.h>
    #include <malloc.h>

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    j'te donne le source de mon fichier .h

    // CineTransDlg.h : header file
    //

    #if !defined(AFX_CINETRANSDLG_H__F4D18E0E_234B_4396_9250_6A1EED140AC3__INCLUDED_)
    #define AFX_CINETRANSDLG_H__F4D18E0E_234B_4396_9250_6A1EED140AC3__INCLUDED_

    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000

    /////////////////////////////////////////////////////////////////////////////
    // CCineTransDlg dialog


    class CCineTransDlg : public CDialog
    {
    // Construction
    public:
    CCineTransDlg(CWnd* pParent = NULL); // standard constructor

    CDialog *Display_Load_Progress();

    void MenuItem(int nPos, UINT nID, UINT nEnable);

    void Lec_Fichier_Bin(CString, CDialog *, unsigned int);

    void Lec_Fichier_Lut(CString, CDialog *, unsigned int);

    void Lec_Fichier_Gam(CString, CDialog *, unsigned int);

    int GetnPos(UINT);

    void Mix_Hex_Lut(CString Chemin_Hex, CString Chemin_Lut);

    void Mix_Hex_Gamma(CString Chemin_Hex, CString Chemin_Lut);


    CString m_strSelectedPath;
    CString m_strFileName;

    TCHAR CurrentDirCinetrans[MAX_PATH];

    CFont font;

    char *MemoryFileNameLoad;


    // Dialog Data
    //{{AFX_DATA(CCineTransDlg)
    enum { IDD = IDD_CINETRANS_DIALOG };
    CButton m_courbe;
    CButton m_Ctrl_Menu_Prog;
    CStatic m_Ctrl_Static_Erase;
    CStatic m_Ctrl_Static_Prog;
    CStatic m_Ctrl_Static_Ver;
    CButton m_Ctrl_Program;
    CButton m_Ctrl_Verify;
    CButton m_Ctrl_Erase;
    CListBox m_Ctrl_Memoire_File;
    CString m_Str_Static_Ver;
    CString m_Str_Static_Prog;
    CString m_Str_Static_Erase;
    //}}AFX_DATA

    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CCineTransDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
    //}}AFX_VIRTUAL

    // Implementation
    protected:
    HICON m_hIcon;

    // Generated message map functions
    //{{AFX_MSG(CCineTransDlg)
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    virtual void OnOK();
    afx_msg void OnProgram();
    afx_msg void OnErase();
    afx_msg void OnProgramme();
    afx_msg void OnVerify();
    virtual void OnCancel();
    afx_msg void OnStaticEpv(LPCTSTR str);
    afx_msg void OnDeviceRead();
    afx_msg void OnHelpAboutcintrans();
    afx_msg void OnHelpContact();
    afx_msg void OnSaveBufferAs();
    afx_msg void OnHelpContent();
    afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
    afx_msg void OnButtonLut();
    afx_msg void OnFileNewlutfile();
    afx_msg void OnFileOpenlutfile();
    afx_msg void OnDblclkMemoireFile();
    afx_msg void OnFileSavebufferasHexfile();
    afx_msg void OnFileSavebufferasLutfile();
    afx_msg void OnButtonGamma();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    };

    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

    #endif // !defined(AFX_CINETRANSDLG_H__F4D18E0E_234B_4396_9250_6A1EED140AC3__INCLUDED_)

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    pour que ça marche il faut que je rajoute dans CineTransDlg.h

    #include "resource.h"


    c'est pas normal , ça marché avant, comment cela se fait ?

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    cherche pas plus longtemps j'ai résolu mon pb. cependant je n'ai tjrs pas resolu mon 1er pb c'est à dire remplacer CButton par CGraphique qui n'est pas reconnu

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    Pour que ça compile sans erreur , j'ai du mettre l'include "Graphique.h" dans CineTransDlg.h

    c'est pas normal, comment t'expliques ça ?

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    et en plus ça marche bien en execution c'est super je ne comprend pas mais c'est super, normalement le fait de mettre #include "graphique.h" devant
    #include "CineTransDlg.h" dans "CineTransDlg.cpp" ça aurait du marcher !

  17. #17
    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 Minos2
    Pour que ça compile sans erreur , j'ai du mettre l'include "Graphique.h" dans CineTransDlg.h

    c'est pas normal, comment t'expliques ça ?
    si c'est normal, c'est aussi une possibilité,
    mais bon vu le bazarre de ton .h ça ne m'etonne pas trop que tu ais des problèmes .
    j'ai compté deux fois resource.h ,alors que celui-ci est déjà inclu dans le .h de l'application ...
    il y a des includes qui sont déjà compris dans stdafx.h afxwin.h et compagnie.

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

Discussions similaires

  1. recherche dans une listbox
    Par micknic dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/02/2005, 21h39
  2. Clique droit dans une ListBox
    Par LoicH dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/02/2005, 22h50
  3. [debutant] supprimer elements dans une listbox
    Par F.F. dans le forum C++Builder
    Réponses: 8
    Dernier message: 02/07/2004, 11h38
  4. [WIN32]tabulation dans une listbox
    Par stoluup dans le forum MFC
    Réponses: 2
    Dernier message: 09/06/2004, 10h11
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

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