Re: How to access Globle veriable from Class function
Hi Giovanni
it Compile But it does not execute. and when i debug it stop in GetClsB()
This is my code
// from class1
void CClsSheet::Init (const _Sheet *St)
{
St = new _Sheet; // _Sheet is typedef struct
HWND pWnd;
pWnd = GetClsDoc()->CurVar->hWnd ; // it stop here
St->dc->Init (pWnd );
}
// from Class2
typedef struct tag_Veriable
{
_Sheet *Sheet;
HWND hWnd;
HDC hDC;
COLORREF Color;
}Veriable;
class Cls_Document
{
public:
void Init();
Cls_Document();
virtual ~Cls_Document();
void Open();
void New();
void Close();
void SethWnd(HWND hWnd);
CClsSheet *Sheet;
Veriable *CurVar, *DefVar; // Current Veriable and Default veriable
};
// Common.h///================================
#if _MSC_VER > 1000
#pragma once
#include "resource.h"
#endif // _MSC_VER > 1000
#include "Test_Document.h"
class Cls_Document;
Cls_Document * GetClsDoc();
// End Common.h///================================
/// Test.Cpp
//==================================
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);.....
bool InitDocument;
Cls_Document ClsDoc; // this is global veriable
Cls_Document * GetClsDoc()
{
return &ClsDoc;
};
int APIENTRY WinMain(HINSTANCE hInstance,.....
//========================================
"Giovanni Dicanio" <giovanniDOTdicanio@REMOVEMEgmail.com> wrote in message
news:uJ72WDLKJHA.3644@TK2MSFTNGP05.phx.gbl...
"Amrit" <cadd@wlink.com.np> ha scritto nel messaggio
news:uxL$B2KKJHA.728@TK2MSFTNGP03.phx.gbl...
i have one small proble. i need to access Globle veriable from Class
function.
I understand that you would like to access a global variable from a method
defined in a class, is that correct?
typedef Struct Sheet
{
}_Sheet;
I assume that "Struct" is actually "struct" keyword (C++ is case
sensitive, unlike VB, so Struct != struct).
If you don't want back-compatibility with C, I would get rid of the
typedef, it is useless in that scenario for C++ :
struct Sheet
{
...
};
works just fine for C++.
// Now in Test.Cpp Which is Main winproc file i include ClassBB.h and
above the WinMain i declare
ClassBB clsB;
// i try this also
CurVar curvar;
So, 'clsB' and 'curvar' are global variable defined in Test.cpp, is that
correct?
And you want to access them from ClassAA::GetCurrentVariable() method,
defined in another .cpp file, right?
In that case, I would provide a couple of global accessors for these
variables, and declare them in a common header file, e.g.
[File Common.h]
// Forward declarations
class ClassBB;
class CurVar;
// Function prototypes - Accessing global instances of ClassBB and
CurVar.
ClassBB * GetClsB();
CurVar * GetCurVar();
Then you can define these functions in Test.cpp, in the same file where
the variables 'clsB' and 'curvar' are defined:
[File Test.cpp]
// Define GetClsB() and GetCurVar() in the same file
// where clsB and curvar are defined
ClassBB clsB;
CurVar curvar;
ClassBB * GetClsB()
{
return &clsB;
}
CurVar * GetCurVar()
{
return &curvar;
}
In ClassAA::GetCurrentVariable() you can just call GetCurVar() and
GetClsB() to access these variables.
HTH,
Giovanni