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 ?
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 ?
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
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);
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...
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
ben tu as oublié de mettre l'include de CGraphique dans ton source (.cpp) au dessus de celui de la fenêtre ....
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 ?
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 ....
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
montre moi l'ordre de tes includes dans CineTransDlg.cpp
#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>
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_)
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 ?
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
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 ?
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 !
si c'est normal, c'est aussi une possibilité,Envoyé par Minos2
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager