// Выбираем пиктограмму для диалоговой панели. Если главное

 // окно приложения не является диалоговой панелью, этот код

 // не нужен

 SetIcon(m_hIcon,TRUE); // выбираем пиктограмму большого

                        // размера

 SetIcon(m_hIcon,FALSE); // выбираем пиктограмму маленького

                         // размера

 // TODO: Здесь вы можете выполнить дополнительную

 // инициализацию

 return TRUE;

}

// Метод OnSysCommand класса CDialogDlg

void CDialogDlg::OnSysCommand(UINT nID, LPARAM lParam) {

 if ((nID & 0xFFF0) == IDM_ABOUTBOX) {

  CAboutDlg dlgAbout;

  dlgAbout.DoModal();

 } else {

  CDialog::OnSysCommand(nID, lParam);

 }

}

// Если вы добавили кнопку минимизации к диалоговой панели,

// следующий код нужен, чтобы отобразить пиктограмму

// Метод OnPaint класса CDialogDlg

void CDialogDlg::OnPaint() {

 if (IsIconic()) {

  CPaintDC dc(this); // контекст устройства

  SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

  // Выравниваем по центру пиктограмму

  int cxIcon = GetSystemMetrics(SM_CXICON);

  int cyIcon = GetSystemMetrics(SM_CYICON);

  CRect rect;

  GetClientRect(&rect);

  int x = (rect.Width() – cxIcon + 1) / 2;

  int y = (rect.Height() – cyIcon + 1) / 2;

  // Отображаем пиктограмму

  dc.DrawIcon(x, y, m_hIcon);

 } else {

  CDialog::OnPaint();

 }

}

// Данный метод вызывается для определения формы курсора,

// отображаемого, когда пользователь переносит

// минимизированное окно

// Метод OnQueryDragIcon класса CDialogDlg

HCURSOR CDialogDlg::OnQueryDragIcon() {

 return (HCURSOR) m_hIcon;

}

Таблица сообщений класса CDialogDlg

Файл DialogDlg.cpp содержит таблицу сообщений класса CDialogDlg. Таблица включает три макрокоманды. Как видите, они расположены в блоке AFX_MSG_MAP, поэтому для управления ими используется ClassWizard.

BEGIN_MESSAGE_MAP(CDialogDlg, CDialog)

 //{{AFX_MSG_MAP(CDialogDlg)

 ON_WM_SYSCOMMAND()

 ON_WM_PAINT()

 ON_WM_QUERYDRAGICON()

 //}}AFX_MSG_MAP

END_MESSAGE_MAP()

При помощи ClassWizard вы можете обнаружить, что макрокоманды выполняют обработку сообщений WM_SYSCOMMAND, WM_PAINT, WM_QUERYDRAGICON, вызывая для этого методы OnSysCommand, OnPaint и OnQueryDragIcon.

Конструктор класса CDialogDlg

Конструктор класса CDialogDlg вызывает конструктор базового класса CDialog. При этом ему передается идентификатор диалоговой панели IDD и идентификатор главного окна приложения pParent. При создании объекта класса CDialogDlg не указываются никакие параметры. Поэтому pParent по умолчанию принимается равным NULL.

//////////////////////////////////////////////////////////////

// Конструктор класса CDialogDlg

CDialogDlg::CDialogDlg(CWnd* pParent /*=NULL*/) : CDialog(CDialogDlg::IDD, pParent) {

 //{{AFX_DATA_INIT(CDialogDlg)

 // В этом блоке ClassWizard размещает инициализацию

 // элементов данных класса

 //}}AFX_DATA_INIT

 // Вызов LoadIcon не требует последующего вызова

 // DestroyIcon, если вы используете программный интерфейс

 // Win32

 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

В теле конструктора расположен блок AFX_DATA_INIT . В него ClassWizard будет добавлять код инициализации элементов данных класса CDialogDlg. Конструктор также инициализирует m_hIcon, записывая в него идентификатор пиктограммы IDR_MAINFRAME.

Функция AfxGetApp возвращает указатель на объект главного класса приложения. Такой объект для данного приложения всегда один. В нашем случае AfxGetApp определяет указатель на объект theApp. Вот прототип этой функции:

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату