Теперь наш диалог нужно привязать к классу. Конечно к CFileDialog, а Вы к какому подумали. Проще всего два раза щелкнуть по нему в ресурсах. Методов было рассказано много.
Добавляем его описание и реакции по выбору меню или кнопки:
void CTestStandartDlg::OnButton1() { CMyOpenDialog cm(TRUE); cm.DoModal(); }
А вот ничего и не произойдет. Есть тут одна хитрость. Даже две. Первое нужно добавить флаг внешнего шаблона.
сlass CMyOpenDialog : public CFileDialog { DECLARE_DYNAMIC(CMyOpenDialog) public: CMyOpenDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ENABLETEMPLATE, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL); ............... };
Во-вторых, перегрузить структуру нашими данными - идентификатором диалога, указателем на модуль, где его взять, да еще нужно стиль проводника убрать.
void CTestStandartDlg::OnButton1() { CMyOpenDialog cm(TRUE); cm.m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_MYOPEN); cm.m_ofn.hInstance = AfxGetInstanceHandle(); cm.m_ofn.Flags &= ~OFN_EXPLORER; cm.DoModal(); }
Запустим что ли.