Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1094 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Variable globale en MFC?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Variable globale en MFC?

n°321675
polo021
Posté le 03-03-2003 à 15:56:50  profilanswer
 

Comment est ce qu'on peut faire pour avoir une variable gloabale en MFC?
Cad une variable que je pourrais voir et modifier depuis n'importe quelle autre classe.
J'avais essaye en la creant dans la classe Doc mais ca ne fonctionne pas. Et je ne comprend pas pourquoi.
 

mood
Publicité
Posté le 03-03-2003 à 15:56:50  profilanswer
 

n°321684
antsite
Je me souviens
Posté le 03-03-2003 à 16:07:28  profilanswer
 

Salut,
Tu la mets dans aucune classe, c'est à éviter je pense te diront des gens plus expérimentés que moi sur le sujet...

n°321704
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 03-03-2003 à 16:20:36  profilanswer
 

Je confirme :
 
"les variables globales c'est mal"  :non:  
 
Surtout que les MFC fournissent suffisamment de mécanisme pour éviter d'avoir recours aux variables globales :
 
Si ce sont des données, tu les declares dans la classe document et tu y accèdes avec GetDocument()->maVariable


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°321714
polo021
Posté le 03-03-2003 à 16:33:00  profilanswer
 

Voici donc une partie du code qui permettra de mieux comprendre.
 
Je me trouve dans la methodes OnOK d'une boite modale.
La boite modale possede un pointeur sur la vue (ptr_view)
La variable que je voudrais "globaliser" est gw de la classe GatewayComm
 
 CComDoc* pDoc = (CComDoc*)ptr_view->GetDocument();
 GatewayComm* ptr_gateway = &pDoc->gw;
        affichage avant
 switch(ptr_gateway->gw_status)
 {
  case GatewayComm::Connected:
   afficher n'importe quoi
   break;
  case GatewayComm::NotConnected:
   afficher autre chose                   break;
  default:
   affichage par defaut
   break;
 }
        affichage apres
 
Voila. J'aurais besoin d'acceder a gw depuis n'importe quel classe donc ma premiere idee etait de mettre cette variable ds le document. Mais le probleme est qu'a l'execution, je ne passe pas dans le switch. Le pgm affiche avant et puis c'est tout, meme pas l'affichage d'apres. Alors d'ou peut venir le probleme?

n°321721
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 03-03-2003 à 16:40:07  profilanswer
 

1) Pourquoi passes tu un ptr à la vue alors que c'est plutôt un ptr au document qu'il faudrait passer ?
 
2) le OnOK() est appellé au moment de la sortie donc c'est normal que rien ne s'affiche dans la boite modale
 
3) Pour mettre à jour les vues abonnées à un document, il y a la méthode CDocument::UpdateAllView


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°321738
polo021
Posté le 03-03-2003 à 16:49:31  profilanswer
 

Tetragrammaton IHVH a écrit :

1) Pourquoi passes tu un ptr à la vue alors que c'est plutôt un ptr au document qu'il faudrait passer ?


oui, c'est vrai que pour cela je me suis un peu complique la vie pour rien.
 

Tetragrammaton IHVH a écrit :


2) le OnOK() est appellé au moment de la sortie donc c'est normal que rien ne s'affiche dans la boite modale


Je ne fais pas l'affichage dans cette boite modale. En fait je programme pour Pocket PC (tout en boite modale) et pour l'affichage, j'appele une autre boite modale. Ce qui reveins au meme qu'un bete printf je pense mais cette boite n'est jamais appelee. Donc ca ne passe pas par le switch.
 

Tetragrammaton IHVH a écrit :


3) Pour mettre à jour les vues abonnées à un document, il y a la méthode CDocument::UpdateAllView


Je ne vois pqs trop en quoi ca pourrait m'aider. Tu peux m'eclairer.

n°321743
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 03-03-2003 à 16:52:50  profilanswer
 

polo021 a écrit :


 
Je ne fais pas l'affichage dans cette boite modale. En fait je programme pour Pocket PC (tout en boite modale) et pour l'affichage, j'appele une autre boite modale.


 
 :ouch: Change de methode, tu te compliques la vie pour rien.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°321754
polo021
Posté le 03-03-2003 à 16:56:18  profilanswer
 

Merci pour ta rapidite, ce forum, c'est presque un chat!  :bounce:  
 
Je vais essayer de reflechir a une autre methode mais ca me semblait interessant. De toute facon tous ces affichages, c'est uniquement pour des tests, donc ca n'apparaitra pas ds la version finale.  
 
Je vais essayer autrement alors. Et on verra bien si ca fonctionne.

n°321884
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 03-03-2003 à 17:09:45  profilanswer
 

Alors si c'est pour des tests, il est peut être plus facile de faire un "logbook", c'est à dire de stocker les variables de test dans un fichier texte ?
 


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°321915
polo021
Posté le 03-03-2003 à 17:19:39  profilanswer
 

Je ne connais pas trop ce principe.  
Mais c sur pocket PC donc pour aller sauver sur un fichier texte et puis aller ensuite l'ouvrir pour regarder son contenu. C'est bcp de ;anipulation. mais je vais suivre ton conseil de trouver une autre methode pour faire mon pgm, en esperant que ca va fonctionner.

mood
Publicité
Posté le 03-03-2003 à 17:19:39  profilanswer
 

n°321940
polo021
Posté le 03-03-2003 à 17:29:46  profilanswer
 

j'ai reussis a me connecter. Donc ca a l'air de fonctionner. J'ai fais au plus simple pour commencer. Donc avec un bouton sur la vue. Le probleme doit etre dut aux boites modales, pointeurs,... c'est vite fait de se tromper.

n°1293990
jercec
Posté le 28-01-2006 à 14:45:46  profilanswer
 

J'aimerais bien savoir comment faire pour déclarer des variables globales dans un prog en MFC... Si vous avez la réponse, ce serait sympa de m'aider!
 
Merci.

n°1294032
smaragdus
whores, drugs & J.S. Bach
Posté le 28-01-2006 à 17:00:34  profilanswer
 

jercec a écrit :

J'aimerais bien savoir comment faire pour déclarer des variables globales dans un prog en MFC... Si vous avez la réponse, ce serait sympa de m'aider!
 
Merci.


 
Il n'y a pas besoin de définir des variables globales dans un prog MFC :non:  

n°1294102
jercec
Posté le 28-01-2006 à 20:22:37  profilanswer
 

smaragdus a écrit :

Il n'y a pas besoin de définir des variables globales dans un prog MFC :non:


Ben dans mon cas c'est bien plus simple et ça ne vaut vraiment pas la peine de faire autre chose... Enfin bon j'ai trouvé comment faire...

n°1295802
slash33
Posté le 31-01-2006 à 19:08:25  profilanswer
 

Un exemple de globale souvent employée : un objet décrivant l'application et dérivé de CWinApp. Ben oui le AfxGetApp() est pénible et en plus peut poser des problèmes en multithread.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Variable globale en MFC?

 

Sujets relatifs
Interfacage Allegro/MFCpassaer une variable JS ds une url, pb avec les ' et les "
MFC[c] problème d'affichage de variable avec outtextxy()
tester si la variable est un entier[MFC] WinInet -> Proxy
[MFC] CAsyncSocket ....Envoyer un tableau d'un tableau par un checkbox pr envoyer 2 variable
"Trier" le contenu d'une variable[MFC] Ajouter des elements a une CListView ?
Plus de sujets relatifs à : Variable globale en MFC?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR