Визуальное программирование и MFC



         

Класс диалоговой панели - часть 2


В него ClassWizard будет добавлять код инициализации элементов данных класса CDlgDlg.

Конструктор также инициализирует m_hIcon, записывая в него идентификатор пиктограммы IDR_MAINFRAME:

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

Метод AfxGetAp возвращает указатель на объект главного класса приложения (в данном случае - указатель на объект theApp).

Метод DoDataExchange

Диалоговая панель имеет только кнопки и не имеет связанных с ними переменных. Однако метод DoDataExchange переопределен. Фактически он не выполняет никакой работы. Единственное, что он делает, - это вызывает метод DoDataExchange базового класса CDialog.

Если к диалоговой панели добавить новые органы управления и связать их средствами ClassWizard с элементами данных класса CDlgDlg, то в блоке AFX_DATA_MAP будут размещены вызовы функций DDX и DDV, необходимые для выполнения обмена данными.

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

Таблица сообщений класса CDlgDlg содержит три макрокоманды, которые выполняют обработку сообщений WM_SYSCOMMAND, WM_PAINT и WM_QUERYDRAGICON. Они расположены в блоке AFX_MSG_MAP, поэтому для управления ими используется ClassWizard.

Метод OnInitDialog

При отображении диалоговой панели при помощи функций DoModal, Create или CreateIndirect, функция диалоговой панели передается сообщение WM_INITDIALOG. Непосредственного доступа к функции диалога нет. Ее реализация содержится в классе CDialog.

В ответ на сообщение WM_INITDIALOG вызывается метод OnInitDialog, объявленный как виртуальный метод класса CDialog. Этот метод вызывается непосредственно перед выводом панели на экран.

MFC AppWizard в реализацию этого метода добавил несколько действий: добавление строки к системному меню для вызова краткой справки о приложении, а также при помощи метода SetIcon выбрал пиктограмму для приложения.

Метод OnInitDialog возвращает значение TRUE. Это означает, что фокус ввода будет установлен на первый орган управления диалоговой панели. Первый орган диалоговой панели можно выбрать в редакторе диалоговой панели.




Содержание  Назад  Вперед