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++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 29 - Связывание класса с шаблоном диалога на этапе выполнения / Диалоговые окна / Visual C++

Шаг 29 - Связывание класса с шаблоном диалога на этапе выполнения

Мы с Вами все как-то связывали на класс с шаблоном диалога при проектировании. Если разобрать прошлый пример, то мы увидим, что идентификатор диалога добавляется в описание класса.

class CDialog2 : public CDialog
{
// Construction
public:
	CDialog2(CWnd* pParent = NULL);   // standard constructor

	// Dialog Data
	//{{AFX_DATA(CDialog2)
	enum { IDD = IDD_DIALOG1 };
	// NOTE: the ClassWizard will add data members here
	//}}AFX_DATA

Вот откуда класс знает, какой шаблон нужно использовать. Но можно поступить по другому. Удалим идентификатор диалога и описание конструктора.

class CDialog2 : public CDialog
{
// Construction
public:

	// Dialog Data
	//{{AFX_DATA(CDialog2)
	// NOTE: the ClassWizard will add data members here
	//}}AFX_DATA

И изменим реализацию конструктора:

///////////////////////////////////
// CDialog2 dialog



void CDialog2::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDialog2)
	// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

При создании диалога непосредственно передадим идентификатор шаблона:

void CTestDialogSdiView::OnDialogDinamic() 
{
	// TODO: Add your command handler code here
	cd2 =(CDialog2*) new CDialog(IDD_DIALOG2,NULL);
	cd2->DoModal();
	delete cd2;
}

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