Шаг 55 - Многократное использование пользовательской DDX в проекте с ClassWizard

В прошлом шаге мы все делали ручками. То есть нашу пользовательскую функцию DDX не удавалось вставлять используя ClassWizard. Сейчас мы это дело исправим. Итак, нужно сначала описать ее проекте в доступном месте. Вариантов очень много, добавим cpp файл в проект.

55_1.gif (11898 b)

Внимательно посмотрите на картинку. Функция подправлена, так как теперь она не является членом класса CDialog, а нам все равно нужно получить идентификатор элемента. Кроме того, она универсальная. В смысле к любому элементу. Все она готова. Теперь вопрос, как сделать так, чтобы ее видел ClassWizard. Для этого нужно отредактировать файл clw проекта.

55_2.gif (8394 b)

Мы добавляем две строки. Несмотря на ужасный вид, она довольно простая.

P – ProgressCtrl.

Вообще-то в MSDN P как таковое не описано. Там вот что. Я прямо картинку приведу для примера, что я не вру.

55_3.gif (15420 b)

Но я попробовал p и получилось с ProgressCtrl. С этим понятно. Второй параметр пропускаем. Дальше идет имя категории.

55_4.gif (3082 b)

Дальше тип переменной, которая будет описана. Конечно он должен совпадать с возвращаемым значением и самой DDX функцией.

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

// Dialog Data
	//{{AFX_DATA(CTestMemoDDXDlg)
	enum { IDD = IDD_TESTMEMODDX_DIALOG };
	CString	m_MyPr;
	//}}AFX_DATA

Дальше значение начальной инициализации, это значение будет в конструкторе.

CTestMemoDDXDlg::CTestMemoDDXDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestMemoDDXDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTestMemoDDXDlg)
	m_MyPr = "5";
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a
	// subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

Ну и имя функции без приставки DDX (DDX_ будет добавлено автоматически).

void CTestMemoDDXDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTestMemoDDXDlg)
	DDX_MyText(pDX, IDC_PROGRESS1, m_MyPr);
	//}}AFX_DATA_MAP
}

И подсказка:

55_5.gif (1197 b)


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