Avatar billede celinder Nybegynder
04. december 2001 - 13:10 Der er 7 kommentarer og
1 løsning

hvordan sættes en global variable i MFC

Jeg har brug for at sætte en global variabel i MFC, jeg skal kunne bruge og ændre denne variable fra flere cpp. filer altså forskellige klasser ??

Håber i kan hjælpe
Avatar billede disky Nybegynder
04. december 2001 - 13:12 #1
lad en klasse hvor denne variabel er inden i. Og ret så via metode kald.

Globale variabler er en særdeles grim ting, som man ikke bruger.
Avatar billede soepro Nybegynder
04. december 2001 - 13:12 #2
Lave en lille include fil:

#ifdef MAIN
  #define _Vartp
#else
  #define _Vartp extern
#endif

_Vartp int globalVariabel;

og inkluder så den i dine .CPP filer, idet du i den ENE af den skriver:

#define MAIN
#include \"global.h\"

og DE ANDRE skriver:

#include \"global.h\"
Avatar billede disky Nybegynder
04. december 2001 - 13:15 #3
forkert



Så kan alle gøre det på samme måde.

Men igen brug IKKE globale variabler
Avatar billede disky Nybegynder
04. december 2001 - 13:17 #4
hvor forsvandt halvdelen hen ?

skriv istedet for
#ifdef MAIN
  #define _Vartp
#else
  #define _Vartp extern
#endif

dette:

#ifdef MAIN
  #define _Vartp
#else
  #define MAIN
  #define _Vartp extern
#endif

Avatar billede celinder Nybegynder
04. december 2001 - 13:20 #5
ok forstået ingen globale variabler !!

Så vil jeg forklare ??

jeg har et main vindu med en menu - fra menuen bliver en dialog boks kaldt - problemet er at man må jo ikke kunne åbne den samme  dialog boks flere gange - her skal lige tilføjes at dialog boksen er modeles, så jeg kan klikke på andre vinduer stadig; Jeg har intet problem med at komme til at åbne flere dialogbokser; - men når jeg lukker vinduet - kan det ike åbnes igen - da jeg jo ikke må bruge globale variabler ??? gir det mening jeg kan godt sende projektet hvis det er en hjælp ??? eller skriv !!!
Avatar billede soepro Nybegynder
04. december 2001 - 13:29 #6
disky >> Sikke noget vrøvl - alle dine dialoger osv. er såguda globale variabler, ligesom din Application er det. At opfinde en klasse forhindrer ikke at alle .CPP moduler laver deres egen instans af klassen - iøvrigt giver det en kompiler-fejl hvis mere end et modul har defineret MAIN, og derfor også definerer variablen. (Ved du hvad du snakker om ?)

celinder >> Den \"globale\" variable der skal bruges tiol at styre om din dialog er aktiv eller ej, lægger du i klassen til din main vindue som en public variabel. Når knappen eller menu-punktet til dialogen aktiveres checker du den globale variable for at finde ud af om dialogen allerede er vist (og derfor blot skal have fokus) eller du skal vise den:

void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
  if (dialog1Active)
    Dialog1->SetFocus();
  else
  {
    Dialog1Active = true;
    dialog1->Show();
  };
}

På din dialog1 skal du i Close event handleren så sørge for at få sat den globale variabel \"af\" igen:

void __fastcall Dialog1::OnClose(TObject *Sender)
{
  frmMain->dialog1Active = false;
}
Avatar billede soepro Nybegynder
04. december 2001 - 13:30 #7
Eventhandlerne hedder sikkert noget andet under MFC (Det ved du jpk ?!?) men du forstår sikkert princippet.
Avatar billede disky Nybegynder
04. december 2001 - 13:35 #8
ja soepro jeg ved hvad jeg snakker om.

Og man definerer ikke variabler på globalt niveau.

Det er noget af det absolut første man lærer som Object Orienteret udvikler.

F.eks. i java findes der ikke noget der hedder globale variabler. (gudskelov)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester