Класс CDialogImpl
Этот класс предоставляет методы для создания модального или безрежимного диалогового окна.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения 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] Дополнительные сведения о сообщении.
Возвращаемое значение
Процедура окна.
Замечания
После первоначального вызова StartDialogProc
DialogProc
устанавливается в качестве процедуры диалогового окна и дальнейшие вызовы отправляются туда.