Используя шаблоны для настройки общего диалога, это не так просто в Windows 7. Сначала вы должны заставить GetOpenFileName вызвать унаследованную функцию из DoModal, что можно легко сделать с помощью m_bVistaStyle = false.Но потом мне пришлось иметь дело с некоторым утверждением
ASSERT (pThreadState-> m_pAlternateWndInit == NULL);pThreadState-> m_pAlternateWndInit = NULL;
Я до сих пор не уверен, для чего это нужно, но это может быть «работа, основанная» на обработке WM_NCDESTROY и простом назначении
_AFX_THREAD_STATE * pThreadState = AfxGetThreadState ()if (:: IsWindow (pThreadState-> m_pAlternateWndInit-> m_hWnd))TRACE ("страшно ...");ещеpThreadState-> m_pAlternateWndInit = NULL;TRACE ("WM_NCDESTROY");вернуть ложь;
в оконной процедуре.Однако мне не удалось получить выбранные имена файлов из диалога OpenFile на CDN_SELCHANGE.Отправка CDM_GETFILEPATH возвращает только 256 символов, независимо от того, насколько большой буфер используется с этим сообщением.Может быть, кто-нибудь знает способ сделать это на Windows 7?