Pointer auf Dlg soll global wirken

Hallo,

Ich habe ein Dlg-Fenster der Klasse CMesssystemDlg.
Auf dieses Dlg hab ich einen Pointer gesetzt, pMyDlg.
Ziel ist es globalen Subroutinen den Zugriff auf Membervariablen dieses Dlgs zu ermöglichen.

Wie kann ich allerdings einer globalen Funktion, die zudem in einer anderen .cpp Datei steht, den Zugriff ermögichen.

- ohne #include "MesssystenDlg.h" zu verwenden.

Das gibt sonst etwa 200 Fehlermeldungen :-)

Gruß,
Alex
 
Irgendwie musst du ja die Membervariablen bekannt machen und das geht nun mal nur über die Header-Datei.
Was die 200 Fehlermeldungen betrifft: Versuche mal vor #include "MesssystenDlg.h" ein #include "resource.h" einzufügen. Vermutlich fehlen nur die im Dialog verwendeten Resource-IDs.

Gruß
MCoder
 
Es geht ja nicht nur um eine Membervariable.
Ich benötige zum Beispiel auch den Geräte-Kontext des Dialogs.

Daher muss es doch auch möglich sein, diesen Dialog bzw. dessen Pointer bekannt zu machen, oder ?

Und was die Fehlermeldungen angeht, liegt das denk ich daran, dass dann sowohl die Messsystem.h in Algorythmus.h included ist und umgekehrt. Sobald das passiert, kommen unmengen kryptischer Fehlermeldungen.
 
Wie schon gesagt, dafür, etwas bekannt zu machen, sind die Header da. Du müsstest also versuchen die Fehlermeldungen zu beseitigen. Kontrolliere noch mal, ob du deine .h-Dateien so aufgebaut hast:
C++:
#ifndef MEINEKLASSE_H
#define MEINEKLASSE_H

class ....
{
    // ...
};

#endif
Die Präprozessoranweisungen sollen verhindern, dass der Header mehrfach eingebunden wird.
Evt. ist es auch möglich die "Algorythmus.h" nur in der cpp-Datei des Dialogs einzubinden und im Header stattdessen eine Vorwärtsdeklaration zu verwenden (wenn die Objekte daraus als Zeiger benutzt werden).

Gruß
MCoder
 
Um die Membervariablen bekannt zu machen, wirst Du um das include nicht herumkommen, wie MCoder schon gesagt hat. Evtl. können wir ja bei der Beseitigung der Fehlermeldungen helfen, sollten MCoders Hinweise nicht schon geholfen haben.
Den Zeiger auf den Dialog mußt Du dann global deklarieren, am besten in dem Modul, in dem Du den Dialog erzeugst. In den anderen Modulen, in denen Du den Dialog ansprechen willst, mußt Du diesen Dialog ebenfalls deklarieren, allerdings mit dem Schlüsselwort 'extern'. DAmit weiß der Compiler, daß er dafür kein eigenes Speicherobjekt anlegen soll, sondern daß dieses Objekt später dazugelinkt wird.
 
Zurück