Auf Dialog aus Klasse zugreifen
-
Hallo
Ich habe eine normale MFC dialogbasierte Anwendung und eine zusätzliche Klasse die ich geschrieben habe. Auf dem Hauptfenster befindet sich ein static text control. Ich möchte jetzt aus meiner Klasse heraus dieses static text control mit text füllen... Nur wie? Komme ich da über das globale Applikationsobjekt theApp ran? Hat da jemand vielleicht etwas Code?
Danke
-
-
Hilft mir nicht wirklich. Ich habe schon versucht am Ende der Dialog Klasse im Header file zu sagen ,extern myAppDlg theDlg;
Das klappt auch nicht. Ich kann dann wohl darauf zugreifen aber linker fehler: unresolved externals..Gibts keinen anderen Weg?
Also ich habe in der Dialog Klasse jetzt folgendes.
void CTestAppDlg::OnBnClickedButton1() { // TODO: Add your control notification handler code here CKlasse2 a; a.test (); }und in der anderen klasse
#include "Klasse2.h" #include "stdafx.h" #include "TestApp.h" #include "TestAppDlg.h" void CKlasse2::test () { CTestAppDlg dlg; //dlg.m_CtrlStaticText.SetWindowTextA ("TEST"); dlg.m_strValue = "Hallo"; }Fehlermeldung: Debug Assertation failed.
-
Ein kleines Beispiel:
void CArbeitsDlg::OnBnClickedOptionen() { INT_PTR DlgResult; COptionen dlgOptionen; // Verknüpfung zur Klasse COptionen herstellen dlgOptionen.i_Boxzustand = Boxzustand; // Variablenwert an die Klasse COptionen mitgeben. DlgResult = dlgOptionen.DoModal(); // Dialog aufrufen if (DlgResult == IDOK) { Boxzustand = dlgOptionen.i_Boxzustand; // Variablenwert aus der Klasse COptionen holen } }soll für Dich eine anregung sein.
Turmfalke64
-
Tut mir leid. Ich verstehe die Anregung nicht... Es soll die Membervariable einer Fensterklasse aus einer anderen Klasse verändert werden. Dafür werde ich doch irgendwie ein Fenster Handle brauchen oder? Beim ButtonClick führe ich die Funktion einer anderen Klasse aus..
CKlasse2 a; a.AendereMeineFensterMemberVariable ();das funktioniert ja auch.. nur das ändern der member variablen nicht...
in der Funktion AendereMeineFensterMemberVariable soll jetzt die Membervariable geändert werden, so das sich der Text im Static Text Control verändert.
-
Ach warum machst de es net einfach so:
CMyDialog : public CDialog { // blabla... halt dein Haupt-Dialog: public: CStatic* GetStaticCtrl(void) { return &m_ctrlMyStatic; } // usw.. }void CMyClass::EditMyStatic(void) { CMyDialog* pDialog = reinterpret_cast<CMyDialog*>(AfxGetMainWnd()); if (pDialog == NULL) return; pDialog->GetStaticCtrl()->SetWindowText(_T("TEST!!!")); }
