AfxGetMainWnd() Verwendung
-
Hallo,
kann man bzw. darf man AfxGetMainWnd() im Mainthread ohne Bedenken verwenden, oder stellt die Verwendung von solchen globalen Methoden meist einen Design-Fehler dar?
In meinem Fall hab ich ein CFormView sowie einen Dialog, in dem der User Einstellungen vornehmen kann. Wenn er jetzt auf OK klickt, dann soll ein zweiter Dialog erscheinen (CWaitDialog), der angezeigt wird, bis all die gemachten Einstellungen verifiziert worden sind.
Das ist bis jetzt meine Erstellungsroutine:
CWaitDialog::CWaitDialog (BOOL pFlag, CString& pszCaption, CString& pszText) : CDialog () { m_pFlag = pFlag; // Disable the main window and create the dialog. AfxGetMainWnd ()->EnableWindow (FALSE); Create (IDD_WAITDIALOG); // Initialize the dialog caption and the static text control. SetWindowText ((pszCaption.GetLength()) ? _T("Working") : pszCaption); // Display the dialog. ShowWindow (SW_SHOW); }
Gruß
Bernd
-
Man darf das sicherlich, aber Du musst das MainWindow nicht disablen. Du kanst einfach für den zweiten Dialog wirder DoModal aufrufen, dann passiert das automatisch.
In der Form wie Du es hier machst sollte man es vermutlich genau nicht tun, denn das Main Window ist ja eben gerade nicht das letzte aktive, das es zu disablen gilt.