Variable global

Signaler
Messages postés
117
Date d'inscription
mardi 3 février 2004
Statut
Membre
Dernière intervention
24 avril 2006
-
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
-
J'ai un projet avec Visual STudio .net 2003 et je veux mettre l'instance de lapplication en variable global.....mais sa fonctionne pas.....J'ai faite ma variable global avant le main et dans mes autre classe il ne la trouve pas....j'ai essayer avec extern et sa fonctionne pas non plus...

voila comment je fait

j'ai essayer sa :
HINSTANCE gInstance;

int WINMAIN (.....)
{
gInstance = hInstance;

}

et sa :

extern HINSTANCE gInstance;

int WINMAIN(...)
{
gInstance = hInstance;
}

4 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Dans UN des .cpp (celui avec WinMain par ex) :
HINSTANCE gInstance = NULL;

dans LES AUTRES (ceux sui veulent y avoir accès) :
extern HINSTANCE gInstance;
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
extern const HINSTANCE gInstance; // irais-je même jusqu'à dire ;-)
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Tu es sur Nebula? Parce que au début gInstance vaut zéro et puis après non
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Ben j'utilise çà dans mes programmes :

1) instance.h
#ifndef __INSTANCE_H__
#define __INSTANCE_H__

extern const HINSTANCE hInstance;
extern VOID GetInstance(VOID);

#endif

2) instance.c
#include "config.h"
#include <windows.h>
#include "assert.h"

HINSTANCE hInstance = NULL;

VOID GetInstance(VOID) {
hInstance = GetModuleHandle(NULL);
assert(hInstance != NULL);
}

Le but étant que l'instance soit en lecture seule partout, sauf dans celui où on l'initialise (bon évidemment, avec un peu de rigueur, pas besoin de ce bazar)...