[VC++] View -> variable globale help!

View -> variable globale help! [VC++] - Programmation

Marsh Posté le 30-01-2002 à 18:06:30    

Salut, voici mon fichier CCarnetView.cpp
 
on me dit de declarer une variable en globale, mais ou dois je la declarer???
 
// CarnetView.cpp : implementation of the CCarnetView class
//
 
#include "stdafx.h"
#include "Carnet.h"
 
#include "CarnetDoc.h"
#include "CarnetView.h"
 
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
 
//////////////////////////////////////////////////
///////////////////////////
// CCarnetView
 
IMPLEMENT_DYNCREATE(CCarnetView, CFormView)
 
BEGIN_MESSAGE_MAP(CCarnetView, CFormView)
 //{{AFX_MSG_MAP(CCarnetView)
  // NOTE - the ClassWizard will add and remove mapping macros here.
  //    DO NOT EDIT what you see in these blocks of generated code!
 //}}AFX_MSG_MAP
 // Standard printing commands
 ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
 ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
 ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()
 
///////////////////////////////////////////////////////
//////////////////////
// CCarnetView construction/destruction
 
CCarnetView::CCarnetView()
 : CFormView(CCarnetView::IDD)
{
 //{{AFX_DATA_INIT(CCarnetView)
  // NOTE: the ClassWizard will add member initialization here
 //}}AFX_DATA_INIT
 // TODO: add construction code here
 
}
 
CCarnetView::~CCarnetView()
{
}
 
void CCarnetView::DoDataExchange(CDataExchange* pDX)
{
 CFormView::DoDataExchange(pDX);
 //{{AFX_DATA_MAP(CCarnetView)
  // NOTE: the ClassWizard will add DDX and DDV calls here
 //}}AFX_DATA_MAP
}
 
BOOL CCarnetView::PreCreateWindow(CREATESTRUCT& cs)
{
 // TODO: Modify the Window class or styles here by modifying
 //  the CREATESTRUCT cs
 
 return CFormView::PreCreateWindow(cs);
}
 
void CCarnetView::OnInitialUpdate()
{
 CFormView::OnInitialUpdate();
 GetParentFrame()->RecalcLayout();
 ResizeParentToFit();
 
}
 
/////////////////////////////////////////////////////////////////////////////
// CCarnetView printing
 
BOOL CCarnetView::OnPreparePrinting(CPrintInfo* pInfo)
{
 // default preparation
 return DoPreparePrinting(pInfo);
}
 
void CCarnetView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
 // TODO: add extra initialization before printing
}
 
void CCarnetView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
 // TODO: add cleanup after printing
}
 
void CCarnetView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
 // TODO: add customized printing code here
}
 
/////////////////////////////////////////////////////////////////////////////
// CCarnetView diagnostics
 
#ifdef _DEBUG
void CCarnetView::AssertValid() const
{
 CFormView::AssertValid();
}
 
void CCarnetView::Dump(CDumpContext& dc) const
{
 CFormView::Dump(dc);
}
 
CCarnetDoc* CCarnetView::GetDocument() // non-debug version is inline
{
 ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCarnetDoc)));
 return (CCarnetDoc*)m_pDocument;
}
#endif //_DEBUG
 
/////////////////////////////////////////////////////////////////////////////
// CCarnetView message handlers

Reply

Marsh Posté le 30-01-2002 à 18:06:30   

Reply

Marsh Posté le 30-01-2002 à 18:07:14    

qui te dit de déclarer un variable globale, et pour faire quoi ?

Reply

Marsh Posté le 30-01-2002 à 18:11:20    

A mort les variables globales!! ;)
(la seule que j´accepte c CWinApp).
 
Sinon tu la met juste après les include, et hop une variable globale pour ttes les classes de ton app.

 

[edtdd]--Message édité par H4dd3R--[/edtdd]


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
Reply

Marsh Posté le 30-01-2002 à 18:35:48    

C'est mon prof qui veut ca...
 
#include "stdafx.h"
#include "Carnet.h"
 
#include "CarnetDoc.h"
#include "CarnetView.h"
 
CDBCarnet oCarnet; // <--- la var globale
 
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
 
 
voila donc c'est la que je dois la mettre? et ben ca me donne 3 erreurs!
 
1) error C2146: syntax error : missing ';' before identifier 'oCarnet'
2) error C2501: 'CDBCarnet' : missing storage-class or type specifiers
3) fatal error C1004: unexpected end of file found
 
et meme si je mets la var globale apres le #endif, ca me donne les memes erreurs...
 
ou la mettre???? je deviens fou :-(

Reply

Marsh Posté le 30-01-2002 à 19:52:03    

Essaie de la mettre dans stdafx.h , comme ca elle est visible par toutes les classes ( n'oublie pas aussi de mettre le .h associé dans stdafx.h ).
 
Mais bon , faut savoir qu'en MFC , on n'utilise jamais de variables globales, cree ta variable dans la classe CMyApplicationApp et apres tu accede a celle en faisant :
(CMyApplicationApp *)AfxGetApp()->nom_variable.
(accessible de partout)

Reply

Marsh Posté le 31-01-2002 à 16:58:01    

Ou que je la mette, j'ai toujours les meme 3 erreurs!
 
c'est pas normal, qu'est ce que je fais de travers???? :(
 
en resume : j'ai cree une classe associe a une base de donnees access (-> dao), il faut maintenant que je cree un objet de cette classe, et ca marche jamais! :(
 
la classe s'appele CDBCarnet
 
aidez moi svp ...

Reply

Marsh Posté le 31-01-2002 à 17:07:55    

AAAAAAAAAAahhhhhhhhhhhhhh j'ai trouve :)
 
j'avais oublie d'inclure le header qu'il faut ! :)
 
merci

Reply

Marsh Posté le 31-01-2002 à 17:49:45    

C'est encore moi, j'ai une autre question
 
voila j'ai les fichiers DBCarnet.h et cpp dans lesquels sont definis certaines variables (en l'occurence m_Nom)
 
dans le fichier CCarnetView.cpp, il y a un include pour DBCarnet.h, donc logiquement je devrais pouvoir acceder a m_Nom dans CCarnetView.cpp ? c'est ce que j'essaye de faire dans la methode OnInitialUpdate, mais il me dit que m_Nom = undeclared identifier
 
qu'ai je mal fait?
 
merci
a+

Reply

Marsh Posté le 01-02-2002 à 10:28:50    

Ca devrait marcher.. Tu utilises pas le bon objet??

Reply

Marsh Posté le 01-02-2002 à 12:41:04    

Ben si...
 
en fait, j'ai une bd access, et dans mon applic il y a une listbox, ce que je dois faire c'est rapatrier les noms de la bd pour les foutres dans la listbox
 
donc j'ai cree la connexion a la bd -> ok
j'ouvre la bd dans l'applic (open()) -> ok
j'ai cree une variable membre (m_lbNoms) de type CListBox qui est en rapport avec le control_id idc_list (donc la listbox) -> ok
 
et dans le fichier CCarnetView.cpp, dans la methode OnInitialUpdate, je veux faire ceci : m_lbNoms.AddString(m_Nom) et le compilateur me dit que m_Nom est un "undeclared identifier"...
 
je vois pas ce qui est mal fait??

Reply

Marsh Posté le 01-02-2002 à 12:41:04   

Reply

Marsh Posté le 01-02-2002 à 15:37:34    

Il n'y a personne pour m'aider?

Reply

Marsh Posté le 02-02-2002 à 12:38:16    

Ya personne???? :(

Reply

Marsh Posté le 02-02-2002 à 13:07:29    

Slash- a écrit a écrit :

C'est encore moi, j'ai une autre question
 
voila j'ai les fichiers DBCarnet.h et cpp dans lesquels sont definis certaines variables (en l'occurence m_Nom)
 
dans le fichier CCarnetView.cpp, il y a un include pour DBCarnet.h, donc logiquement je devrais pouvoir acceder a m_Nom dans CCarnetView.cpp ? c'est ce que j'essaye de faire dans la methode OnInitialUpdate, mais il me dit que m_Nom = undeclared identifier
 
qu'ai je mal fait?
 
merci
a+  




 
:non:  :non: variable globale = programmation de porc
 
Sinon je suppose que tu dois faire un
 

Code :
  1. CDBCarnet monInstance;
  2. monInstance.Open();
  3. // ensuite tu fais :
  4. m_lbNoms.AddString(monInstance.m_Nom); // et non pas m_lbNoms.AddString(m_Nom);  
  5. //et ça marche


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 02-02-2002 à 13:40:11    

Moi je fais ce qu'on me demande...
 
merci ca fonctionne comme ca ! :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed