Шаг 95 - Изменение стандартных окон - дальше

Теперь наш диалог нужно привязать к классу. Конечно к CFileDialog, а Вы к какому подумали. Проще всего два раза щелкнуть по нему в ресурсах. Методов было рассказано много.

95_1.gif (5703 b)

Добавляем его описание и реакции по выбору меню или кнопки:

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(); 
}

Запустим что ли.

95_2.gif (6915 b)


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 14.07.2002