fenster in Dialog einbinden
-
Hi,
hab hier ein kleines Problem. ich hab ne Dialoganwendung aus welcher über einen Button mittels CWinThread ein Thread gestartet wird. Dieser Thread soll nun ein fenster steuern - soweit kein Problem, nur soll das Fenster in die Dialoganwendung eingebunden sein. Und hier setzts bei mir aus - wie kann ich denn in eine Dialoganwendung ein fenster einbinden. Für mich waren das bisher 2 getrennte Dinge!

Ich wär euch dankbar wenn ihr mir helfen könntet.MfG
Marc
-
Sag mal, kannst Du das auch genauer beschreiben? Was soll den anders laufen, wie außerhalb eines Threads?
-
Hi,
sry wenn meine Ausführung ned verständlich war. Hier mal der genaue Text was ich machen soll.
--------------
Es soll eine Dialoganwendung unter Visual C++ Version 6 oder 7 erstellt
werden, die folgende Funktionen enthält:
- Erstellen sie einen Thread der in einem einstellbaren Zeitraum ein
beliebiges Fenster ein- und ausblendet. Der Thread soll als Singleton in
einer eigenständigen Klasse gekapselt sein. Implementieren sie diesen
Thread in einer Anwendung (Dialog/MFC).
- Der Thread muss per Button gestartet/angehalten werden.
- Das vom Thread gesteuerte Fenster ist ebenfalls in dem Dialog
eingebunden.
--------------thread erstellen kein Problem, das ganze inner Singletonklasse auch kein Problem. Thread per Button starten/beenden ist ja auch billig nur der letzte Punkt (Das vom Thread gesteuerte Fenster ist ebenfalls in dem Dialog
eingebunden.) verwirrt mich etwas. Ich hab keine Ahnung wie ich das umsetzen soll. Sry, mehr Infos hab ich ned bekommen also kann ichs leider auch ned genauer beschreiben! Vielleicht kann mir aber trotzdem wer weiterhelfen!
-
"fenster" is ein sehr allgemeiner begriff
wie erstellst du das fenster denn... die meisten fenstererstellungsfunktionen haben einen parentwindow parameter dem du dialog.m_hWnd übergeben kannst
-
Problem erkannt!

Was ist mit Fenster gemeint!
Also nachdem mir keine 100% eindeutige Definition untergekommen ist interpretiere ich fenster jetzt einfach als eine Dialoganwendung in der Dialoganwendung. <- Wenn da was gegen spricht bitte mitteilen!
Ich wollte testweise den Dialog bei Knopfdruck erscheinen lassen.
Hierzu hab ich bei der OnBtn-Methode folgendes eingefügt:CChildDialog objChild; objChild.DoModal();Problem hierbei ist das zwar der ChildDlg geöffnet wird, ich anschliessend aber auf nix mehr zugreifen kann. Weder die Buttons vom Child noch die vom Parent sind anwählbar, auch Sysmenü oder X oder Alt+F4 funzen.
Hab den MainDlg als überlappend, den ChildDlg als untergeordnet deklariert.
-
Erstell ihn mal nicht mit DoModal, sondern mit Create und ShowWindow!
-
Hab ich vorhin auch schon probiert. Lässt sich dann ohne Fehler übersetzen aber sobald ich den Btn drück um den Dialog zu öffnen stürzt das Proggie ab.
in der OnBtn-Fnk steht folgendes:
CChildDialog objChild;
objChild.MoveWindow(10, 10, 50, 50);
objChild.ShowWindow(SW_SHOW);In der Init vom hauptdialog:
CChildDialog objChild;
objChild.Create(IDD_DIALOG1 );
-
Wie wärs wenn du die Variable mal global definierst und das Create mit in die OnBtn funktion reinbaust?
ka obs klappt probieren geht über studieren
-
GCRACK schrieb:
Hab ich vorhin auch schon probiert. Lässt sich dann ohne Fehler übersetzen aber sobald ich den Btn drück um den Dialog zu öffnen stürzt das Proggie ab.
in der OnBtn-Fnk steht folgendes:
CChildDialog objChild;
objChild.MoveWindow(10, 10, 50, 50);
objChild.ShowWindow(SW_SHOW);In der Init vom hauptdialog:
CChildDialog objChild;
objChild.Create(IDD_DIALOG1 );das is total falsch
vielleicht solltest du erstmal noch n bissi c++ büffelnmach CChildDialog objChild; zu einer membervariable von deinem hauptdialog und
lass die restlichen aufrufe drinausserdem ersetz
objChild.Create(IDD_DIALOG1 );
durch
objChild.Create(IDD_DIALOG1,this/*zweiter parameter identifiziert das parentfenster*/);
-
Sovok schrieb:
das is total falsch
vielleicht solltest du erstmal noch n bissi c++ büffelnNaja, so total falsch scheints ja doch ned zu sein. Und zum Glück weiss auch keiner das ich gelernter FiAe bin

Werd nachher mal deine Anmerkung umsetzen, mal sehen obs dann klappt.
Edit:
Hab deine Vorschläge umgesetzt, am ergebnis hat sich jedoch nix geändert.
Gibt nachwievor nen Programmabsturz.
-
sag doch mal wo genau "in deinem code" der absturz stattfindet
mit total falsch meinte ich
in der OnBtn-Fnk steht folgendes: CChildDialog objChild; //lokale variable? objChild.MoveWindow(10, 10, 50, 50); objChild.ShowWindow(SW_SHOW); In der Init vom hauptdialog: CChildDialog objChild; //lokale variable? objChild.Create(IDD_DIALOG1 );wenn es so wär würde das objekt beim verlassen der funktion zerstört