Grundgerüst: Aufteilung von GUI und Programm
-
extern schrieb:
er wollte nur seine frage beantwortet haben, keine altklugen ratschläge.
Dann poste auch, was das mit extern auf sich hat und wie das das Design-Problem lösen kann.

-
Also ich würd sagen bei so trivialen sachen wie'n dialog reicht ne globale variable, da ist kein design-fegler drin(zumidest vom aufwand her gesehen)
Also anwendugsvorschlag/erklärung:
// TATA.h: extern int g_Var, GlobaleVariable, oder_anderer_name; // TATA.cpp: #include "TATA.h" ... int g_Var = 4345, GlobaleVariable = INT_MAX, oder_anderer_name = (int)sizeof(void*); // TÜTÜ.cpp: #include "TATA.h" ... void FuncDieKeinerBrauch() { if(g_Var == 4345) GlobaleVariable++; // Pöhse }
-
Danke leute! ihr habt mich angeregt.
ich habe es jetzt so gemacht, wie Borland C++ Builder 6 bei den Form-Klassen.
#include "AlarmClock.h" extern CAlarmClock Alarm; CAlarmClock::CAlarmClock(void) { } CAlarmClock::~CAlarmClock(void) { }
-
Aber er nimmts nicht!
ich hab in der WinMain included, aber er sacht, er hat die Alarm-Variable nicht!
was nun?
-
sry for doppelpost^^.
Aber jetzt habe ich dass problem:
das Funktioniert in der WinMain super, wenn ich die Klasse oben included habe.
Aber in anderen headern die darunter included sind ist die Instanz nicht verfügbar.
was kann ich tun?
thx.
-
Script-Styler schrieb:
Aber in anderen headern die darunter included sind ist die Instanz nicht verfügbar.
was kann ich tun?Wie 'die darunter included sind'
? Poste mal den entsprechenden Codeausschnitt und die Compiler-Log.PS: Ungeachtet dessen, was 'extern' gesagt hat, sind globale Variablen schlechter Stil, vllt. legst Du Dein Problem mal etwas genauer dar, da es sich evtl. auch ohne globale Variablen lösen lässt
.
-
Ja, ich habe das so includiert:
#include <windows.h> #include <math.h> #include <commctrl.h> #include <tchar.h> #include "AlarmClock.h" #include "AlarmClockDlg.h" #include "SetDlg.h" #include "AboutDlg.h"Aber in der darunterstehenden WInMain kann man das auch benutzen (Alarm).
Aber wenn ich jetzt in SetDlg bin kann ich die externe Variable nicht ansprechen.
er kennt die nicht!thx.
-
Leute?
wie mach ich das jetzt?
jeder Dialog hat eine h und cpp mit jeweils einer MessageProc und einer Aufruf funktion.
ich WILL, dass Alle zugriff auf bestimmte Variablen und methoden haben.
eine Klasse??
wie mach ich das?
thx.
-
Ohne jetzt persönlich werden zu wollen:
Bitte zeige mehr Eigenständigkeit und lerne erstmal vernünftig zu programmieren.
Dazu gibt es massig Bücher (s. z.b. entsprechende Rubrik auf dieser HP). Wenn dir das zu teuer ist, bediene dich der Tutorials im Netz oder der MSDN. Du wirst im Endeffekt erfolgreicher sein und kannst dann auch von dir selbst behaupten "das habe ich alleine geschafft!".
Aber wenn du hier weiter Fragen stellst, die grundlegend sind und durch X Tutorials/Bücher beantwortet werden, wird den Forenmitgliedern mit der Zeit die Lust vergehen dir zu helfen! Das Forum sollte wirklich nur als letzte Instanz dienen, nachdem man vergeblich mit oben genannten Quellen/Hilfsmitteln versucht ein Problem zu lösen.MfG
-
Das stimmt.
Ich habe ja schon Tuts zu globalen Vars und den Geltungsbereich von Variablen gelesen.
Aber das Problem ist ja, dass ich eine Klasseninstanz! ein mehreren! Dateien benötige.
Ich könnte es natürlich auch so machen, dass ich eine benutzerdefinierte Windows-Nachricht nehme, die die Systemtime immer von dem Child-Fenster bekommt.
// Edit: fällt weg, da DialogBox und die ParentProc bleibt stehen.was wäre denn besser? und wie realisiere ich das mit der einen!!! klasseninstanz in mehreren Dateien er nimmt das nicht!
Kurz gesagt: Ich möchte die GUI modular von dem Programm trennen.
Dazu wollte ich eine Klasse machen, die die Aktionen macht.
Dann habe ich für jeden Dialog eine Proc in jeweils seperaten Dateien.
So, nun noch die Main.cpp. da wird alles included.
Aber wie bekomme ich eine Klasseninstanz der Aktionenklasse, die man in allen Dateien nutzen kann?Das mit dem extern funzt net so, da ist das nur in einer datei.
Oder hättet ihr einen anderen Trenn-vorschlag???Danke.
MfG.
-
Der Geltungsbereich von Variablen, was du in Tuts nachgelesen hast, ist ein ganz kleiner Bereich der Programmierung. Du solltest hier mit den Tutorials aber bei weitem nicht Schluss machen.
Schau dir die Arbeitsweise von klassen an und schau auch, wie Frameworks wie die MFC Dinge in Klassen kapseln. Wenn du das gemacht hast, probiere es selbst. Wenn es nicht klappt, les das Tutorial nochmal. Und lies weiterführende Literatur. Erst wenn du dann immernoch verzweifelt nicht weiß, wie du das Problem angehen sollst, komm hier wieder zurück.