Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Этот класс предоставляет методы для создания модального или безрежимного диалогового окна.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.
Синтаксис
template <class T,
class TBase = CWindow>
class ATL_NO_VTABLE CDialogImpl : public CDialogImplBaseT<TBase>
Параметры
T
Класс, производный от CDialogImpl.
TBase
Базовый класс нового класса. Базовый класс по умолчанию — CWindow.
Участники
Методы
| Function | Description |
|---|---|
| Создание | Создает диалоговое окно без режима. |
| DestroyWindow | Удаляет диалоговое окно без режима. |
| DoModal | Создает модальное диалоговое окно. |
| EndDialog | Уничтожает модальное диалоговое окно. |
Методы CDialogImplBaseT
| Function | Description |
|---|---|
| GetDialogProc | Возвращает текущую процедуру диалогового окна. |
| MapDialogRect | Сопоставляет единицы диалогового окна указанного прямоугольника с единицами экрана (пикселями). |
| OnFinalMessage | Вызывается после получения последнего сообщения, обычно WM_NCDESTROY. |
Статические функции
| Function | Description |
|---|---|
| DialogProc | Обрабатывает сообщения, отправленные в диалоговое окно. |
| StartDialogProc | Вызывается при получении первого сообщения для обработки сообщений, отправленных в диалоговое окно. |
Замечания
С помощью CDialogImpl этого диалогового окна можно создать модальное или безрежимное диалоговое окно. CDialogImpl предоставляет процедуру диалогового окна, которая использует карту сообщений по умолчанию для направления сообщений в соответствующие обработчики.
Деструктор ~CWindowImplRoot базового класса гарантирует, что окно исчезнет перед уничтожением объекта.
CDialogImpl производный от CDialogImplBaseT, от которого, в свою очередь, является производным от CWindowImplRoot.
Примечание.
Класс должен определить элемент, указывающий IDD идентификатор ресурса шаблона диалогового окна. Например, мастер проектов ATL автоматически добавляет в класс следующую строку:
enum { IDD = IDD_MYDLG };
где MyDlg введите короткое имя на странице "Имена" мастера.
| Дополнительные сведения | Смотрите |
|---|---|
| Создание элементов управления | Учебник по ATL |
| Использование диалоговых окон в ATL | Классы окон ATL |
| Мастер проектов ATL | Создание проекта ATL |
| Диалоговые окна | Диалоговые окна и последующие разделы пакета SDK для Windows |
Требования
Заголовок: atlwin.h
CDialogImpl::Create
Создает диалоговое окно без режима.
HWND Create(
HWND hWndParent,
LPARAM dwInitParam = NULL );
HWND Create(
HWND hWndParent,
RECT&,
LPARAM dwInitParam = NULL);
Параметры
hWndParent
[in] Дескриптор окна владельца.
RECT& rect [in] Структура RECT , указывающая размер и положение диалогового окна.
dwInitParam
[in] Указывает значение, которое нужно передать в диалоговое окно в параметре lParam сообщения WM_INITDIALOG.
Возвращаемое значение
Дескриптор созданного диалогового окна.
Замечания
Это диалоговое окно автоматически присоединяется к объекту CDialogImpl . Чтобы создать модальное диалоговое окно, вызовите DoModal. Второе переопределение выше используется только с CComControl.
CDialogImpl::D enostWindow
Удаляет диалоговое окно без режима.
BOOL DestroyWindow();
Возвращаемое значение
ЗНАЧЕНИЕ TRUE, если диалоговое окно успешно уничтожено; в противном случае ЗНАЧЕНИЕ FALSE.
Замечания
Возвращает значение TRUE, если диалоговое окно успешно уничтожено; в противном случае ЗНАЧЕНИЕ FALSE.
CDialogImpl::D ialogProc
Эта статическую функцию реализует процедуру диалогового окна.
static LRESULT CALLBACK DialogProc(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
Параметры
hWnd
[in] Дескриптор диалогового окна.
uMsg
[in] Сообщение, отправленное в диалоговое окно.
wParam
[in] Дополнительные сведения о сообщении.
lParam
[in] Дополнительные сведения о сообщении.
Возвращаемое значение
ЗНАЧЕНИЕ TRUE, если сообщение обрабатывается; в противном случае — ЗНАЧЕНИЕ FALSE.
Замечания
DialogProc использует карту сообщений по умолчанию для направления сообщений соответствующим обработчикам.
Можно переопределить DialogProc для предоставления другого механизма обработки сообщений.
CDialogImpl::D oModal
Создает модальное диалоговое окно.
INT_PTR DoModal(
HWND hWndParent = ::GetActiveWindow(),
LPARAM dwInitParam = NULL);
Параметры
hWndParent
[in] Дескриптор окна владельца. Значение по умолчанию — возвращаемое значение функции GetActiveWindow Win32.
dwInitParam
[in] Указывает значение, которое нужно передать в диалоговое окно в параметре lParam сообщения WM_INITDIALOG.
Возвращаемое значение
В случае успешного выполнения значение параметра nRetCode , указанного в вызове EndDialog. В противном случае –1.
Замечания
Это диалоговое окно автоматически присоединяется к объекту CDialogImpl .
Чтобы создать диалоговое окно без режима, вызовите команду Create.
CDialogImpl::EndDialog
Уничтожает модальное диалоговое окно.
BOOL EndDialog(int nRetCode);
Параметры
nRetCode
[in] Значение, возвращаемое CDialogImpl::D oModal.
Возвращаемое значение
ЗНАЧЕНИЕ TRUE, если диалоговое окно уничтожено; в противном случае — ЗНАЧЕНИЕ FALSE.
Замечания
EndDialog необходимо вызвать с помощью процедуры диалога. После уничтожения диалогового окна Windows использует значение nRetCode в качестве возвращаемого значения DoModal, для которого было создано диалоговое окно.
Примечание.
Не вызывайте EndDialog диалоговое окно без режима. Вместо этого вызовите CWindow::D ewindow .
CDialogImpl::GetDialogProc
Возвращает DialogProcтекущую процедуру диалогового окна.
virtual WNDPROC GetDialogProc();
Возвращаемое значение
Текущая процедура диалогового окна.
Замечания
Переопределите этот метод, чтобы заменить процедуру диалога собственной.
CDialogImpl::MapDialogRect
Преобразует (сопоставляет) блоки диалогового окна указанного прямоугольника в единицы экрана (пиксели).
BOOL MapDialogRect(LPRECT lpRect);
Параметры
lpRect
Указывает на объект или структуру RECT, которая заключается в CRect получении клиентских координат обновления, включающего регион обновления.
Возвращаемое значение
Ненулевое значение, если обновление успешно выполнено; Значение 0, если обновление завершается ошибкой. Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError.
Замечания
Функция заменяет координаты в указанной RECT структуре преобразованными координатами, что позволяет использовать структуру для создания диалогового окна или размещения элемента управления в диалоговом окне.
CDialogImpl::OnFinalMessage
Вызывается после получения последнего сообщения (обычно WM_NCDESTROY).
virtual void OnFinalMessage(HWND hWnd);
Параметры
hWnd
[in] Дескриптор уничтоженного окна.
Замечания
Обратите внимание, что если вы хотите автоматически удалить объект при уничтожении окна, можно вызвать его.
CDialogImpl::StartDialogProc
Вызывается только один раз при получении первого сообщения для обработки сообщений, отправленных в диалоговое окно.
static LRESULT CALLBACK StartDialogProc(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
Параметры
hWnd
[in] Дескриптор диалогового окна.
uMsg
[in] Сообщение, отправленное в диалоговое окно.
wParam
[in] Дополнительные сведения о сообщении.
lParam
[in] Дополнительные сведения о сообщении.
Возвращаемое значение
Процедура окна.
Замечания
После первоначального вызова StartDialogProcDialogProc устанавливается в качестве процедуры диалогового окна и дальнейшие вызовы отправляются туда.