Dateidialoge in MFC 9.0

 C Programming >> C-Programmierung >  >> Tags >> MFC
Dateidialoge in MFC 9.0

Windows Vista hat das Aussehen der Dateidialoge neu gestaltet. MFC 9.0 (das mit Visual Studio 2008 ausgeliefert wird) wurde aktualisiert, um das neue Erscheinungsbild zu unterstützen. Wenn Sie Ihre MFC-Anwendung mit VS 2008 kompilieren, erhalten Sie die neuen Dateidialogfelder ohne zusätzliche Änderung. Wenn Sie die Anwendung dagegen unter Win XP ausführen, werden die alten Dateidialoge angezeigt. Möglich wird dies durch einen zusätzlichen Parameter zum Konstruktor von CFileDialog . Die alte Konstruktorsignatur war:

explicit CFileDialog( 
   BOOL bOpenFileDialog, 
   LPCTSTR lpszDefExt = NULL, 
   LPCTSTR lpszFileName = NULL, 
   DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
   LPCTSTR lpszFilter = NULL, 
   CWnd* pParentWnd = NULL, 
   DWORD dwSize = 0);

Der neue Konstruktor in MFC 9.0 hat einen zusätzlichen Parameter, ein BOOL-Flag, das angibt, ob die Vista-Dialogfelder angezeigt werden sollen oder nicht.

explicit CFileDialog( 
   BOOL bOpenFileDialog, 
   LPCTSTR lpszDefExt = NULL, 
   LPCTSTR lpszFileName = NULL, 
   DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
   LPCTSTR lpszFilter = NULL, 
   CWnd* pParentWnd = NULL,
   DWORD dwSize = 0, 
   BOOL bVistaStyle = TRUE);

Um die Vista-Dateidialoge anzuzeigen, müssen Sie lediglich einen CFileDialog instanziieren Objekt und erstellen Sie den Dialog selbst:

CFileDialog dlg(TRUE, NULL, NUL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
                L"Text files (*.txt)|*.txt||", this); 
dlg.DoModal();

Sie können immer noch das Aussehen und Verhalten des alten Dateidialogs verwenden, wenn Sie den letzten Parameter auf FALSE setzen:

CFileDialog dlg(TRUE, NULL, NUL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
                L"Text files (*.txt)|*.txt||", this, 0, FALSE); 
dlg.DoModal();

Dieses alte Dialogfeld erhalten Sie automatisch, wenn Sie es auf einem früheren Betriebssystem ausführen.