C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  Update World C++: Сборник GPL QT исходников
  Весь сайт целиком можно загрузить по ссылкам из раздела Скачать

 95 - Изменение стандартных окон - дальше / Диалоговые окна / Visual C++

Шаг 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)


| |
Автор Каев Артем.
[AD]