Neuen Dialog öffnen in SDI

saibot83

Grünschnabel
Hallo,

wieder mal eine Anfängerfrage.

Ich habe ein SDI-Projekt und habe als Ressource einen neuen Dialog angelegt und im Hauptmenü einen Punkt "Dialog öffnen". Was muss ich nun in die Behandlungsroutine für diesen Fall schreiben um den Dialog zu öffnen?

Ich habe eine neue Klasse für den Dialog erstellt, so dass ich den Dialog so aufrufen kann:
Code:
void CDialogtestApp::OnOpenDialog1() 
{
	CDialog1 testdlg;
	testdlg.DoModal();
}

Aber geht das auch anders, ohne für jeden Dialog extra eine neue Klasse anzulegen?
Oder wie wird das korrekt gemacht?


Und noch ne Frage:
In meiner selbst erstellen Klasse CDialog1 will ich bei Buttonklick einen Wert aus einem Edit-Feld übernehmen und in eine Variable schreiben, die sich aber in CDialogtestDoc befindet. In CDialogtestView gibts ja GetDocument(), um dann auf eine Variable von CDialogtestDoc zuzugreifen, aber in meiner selber erstellten Klasse nicht. Wie kann ich dann auf eine Variable aus einer "fremden" Klasse zugreifen?
 
Zuletzt bearbeitet:
Versuchs mal so:
Code:
void CDMDLANTesterDlg::OnBnClickedscroll()
{
	bool Cancel;
	ScrollingDialog SCRDialog=new ScrollingDialog();
	SCRDialog.DoModal();
	Cancel=SCRDialog.cancel;
        delete SCRDialog;
}
Das ist zwar nicht die scönste Variante aber es funktioniert.
Wenn du die Klasse selber erstellt hast kannst du doch dem Konstruktor einen Pointer mit geben, der auf ein andere Klasse zeigt, und dann darüber auf deren Memeber zugreifen
 
Dialog öffnen klappt inzwischen, nur das mit dem Zugriff auf ne Membervariable einer anderen Klasse hab ich noch nicht hingekriegt.

In meinem Konstruktor steht bis jetzt:

Code:
CDialog1::CDialog1(CWnd* pParent /*=NULL*/)
	: CDialog(CDialog1::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDialog1)
	m_E1 = 0;
	m_E2 = 0;
	//}}AFX_DATA_INIT
}


Wie müsste ich das dann machen dass ich auf m_Var1 der Klasse CDialogtestDoc zugreifen kann?
 
Versuch's mal so:
C++:
CView          *pView = ((CFrameWnd *)AfxGetMainWnd())->GetActiveView();
CDialogtestDoc *pDoc  = NULL;

if( pView )
{
    pDoc = (CDialogtestDoc *)pView->GetDocument();
}    

if( pDoc )
{
    // pDoc->m_Var1 = ...
}
Gruß
MCoder
 
Zurück