2013-03-26 14 views
5

Używam niestandardowego okna dialogowego pliku, które jest rozszerzone z CFileDialog. Problem polega na tym, że OninitDialog() nie jest wywoływany przed DoModal().CFileDialog :: OnInitDialog() nie wywołuje

Mam dostosowane CFileDialog w OninitDialog().

Używam VS 2012 z Win7 OS.

Nie mogłem się dowiedzieć, co jest nie tak.

Odpowiedz

2

Urządzenie Microsoft documentation mówi, że OnInitDialog nie jest obsługiwane w systemie Windows Vista. To samo dotyczy systemu Windows 7 (i prawdopodobnie także systemu Windows 8).

+0

Czy istnieje jakaś inna opcja dostosowywania CFileDialog ?? Czy jest jakiś inny dialog, dzięki któremu mogę uzyskać rozwiązanie ..? Proszę zasugeruj. –

+0

Może możesz uzyskać informacje tutaj http://forum.codejock.com/forum_posts.asp?TID=10550&title=cfiledialog-using-mfc-on-vista i tutaj http://msdn.microsoft.com/en-us /library/vstudio/bb775912.aspx. BTW, dlaczego potrzebujesz OnInitDialog w swoim CFileDialog? –

+0

Właściwie chcę zmodyfikować to okno dialogowe, tzn. Chcę dodać pole wyboru, przycisk i combobox zgodnie z wymaganiami mojej aplikacji. –

2

Po prostu napotkam dziś ten sam problem; Myślę, że znalazłem prawidłowe rozwiązanie, w konstruktorze twojej klasy po prostu ustaw m_bVistaStyle = FALSE; Po zrobieniu tego, otrzymałem OnInitDialog i udało mi się dostosować to okno dialogowe po prostu dobrze.

CMyOpenDlg::CMyOpenDlg(LPCTSTR lpszDefExt, LPCTSTR lpszFileName, 
     DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) : 
     CFileDialog(TRUE, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd) 
{ 
    m_bVistaStyle = FALSE; 
+0

Up-votes, ale 'm_bVistaStyle' nie powinno być ustawione w konstruktorze (przynajmniej powinno zostać przywrócone w destruktorze). Zamiast tego należy przekazać FALSE do ostatniego parametru 'bVistaStyle' podczas konstruowania obiektu CFileDialog. –

Powiązane problemy