Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Топ:
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Дисциплины:
2022-10-29 | 29 |
5.00
из
|
Заказать работу |
|
|
Для указания сообщений, которые должно обрабатывать приложение, используется макрокоманда включения. Это реализуется описанием (макрокоманда DECLARE_MESSAGE_MAP) очереди сообщений (карты подключения) окна вида
BEGIN_MESSAGE_MAP(моеОКНО, CFrameWnd)
Список макрокоманд включения
END_MESSAGE_MAP().
Макрокоманда включения формируется по правилам
ON_< ИдентификаторСообщения >([СписокПараметров]).
Например, для сообщения LBUTTONDOWN получим ИдентификаторСообщения WM_LBUTTONDOWN, ИмяОбработчика OnLButtonDown, макрокоманда включения ON_WM_LBUTTONDOWN(), прототип функции-обработчика
afx_msg void OnLButtonDown(UINT flags, CPoint loc).
Однако для сообщения COMMAND ИдентификаторСообщения WM_COMMAND, ИмяОбработчика OnCommand, макрокоманда включения ON_COMMAND (ИмяРесурса, ИмяОбработчика)!
Таким образом, для того, чтобы конкретное окно (например, описанное в классе моеОКНО) реагировало на сообщения, необходимо для каждого из сообщений:
- описать в классе окна соответствующий обработчик;
- включить чувствительность окна к этому типу сообщений.
MFC. Основные методы класса CDialog.
1) CDialog - Конструирует объект CDialog
class MY_DIALOG: public CDialog
{
public:
MY_DIALOG (char *DialogName, CWnd *Owner): CDialog(DialogName, Owner) { };
//<afx_msg прототипы обработчиков сообщений>
DECLARE_MESSAGE_MAP()
};
2) Create - Инициализирует объект CDialog
3) DoModal - Вызывает модальное диалоговое окно и завершает работу после его закрытия
MY_DIALOG TheDialog((LPTSTR) IDD_DIALOG1 /*"SampleDialog"*/, this);
TheDialog.DoModal();
4) EndDialog - Закрывает модальное диалоговое окно
TheDialog.EndDialog();
5) OnInitDialog - Переопределяется для проведения дополнительной инициализации диалогового окна
MFC. Основные этапы разработки и управления диалоговым окном.
1) Создать файл описания ресурсов (или просто файл ресурсов *.rc). Для этого выполнить команду ГМ-Project-AddToProject-New-Files, выбрать тип - Resource Script, а в качестве имени файла задать <ИмяПриложения>. Автоматически к проекту будет добавлен Resource Script файл с именем <ИмяПриложения>.rc>. Подключить файл описания ресурсов к приложению посредством команды #include "resource.h".
|
2) Создать новый ресурс - диалоговое окно. Добавить ресурс к проекту командой ГМ-Insert-Resource-Dialog.
3) Отредактировать внешний вид (облик) окна. Настроить окно (свойства окна), например, сохранить стиль (Style) Popup и (Border) Dialog Frame (или Resizing!).
4) Описать пользовательский класс MY_DIALOG для создания экземпляров пользовательских диалоговых окон. Для этого в тексте каркаса приложения описать класс MY_DIALOG, обслуживающий диалоговое окно <ID_имя_диалогового_окна>, как производный от библиотечного класса MFC - CDialog. Описать конструктор MY_DIALOG (char *DialogName, CWnd *Owner), где DialogName - ID-имя диалогового окна, Owner - его владелец (здесь, как правило, текущее окно, т.е. this).
class MY_DIALOG: public CDialog
{
public:
MY_DIALOG (char *DialogName, CWnd *Owner): CDialog(DialogName, Owner) { };
//<afx_msg прототипы обработчиков сообщений>
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP (MY_DIALOG, CDialog)
//<указание типов обрабатываемых сообщений и имен их обработчиков>
END_MESSAGE_MAP()
5) Подключить диалоговое окно к приложению. Диалоговое окно создается и запускается следующим образом:
MY_DIALOG TheDialog((LPTSTR) IDD_DIALOG1, this);
TheDialog.DoModal();
MFC. Описание пользовательского класса для работы с диалоговым окном.
Описать пользовательский класс MY_DIALOG для создания экземпляров пользовательских диалоговых окон можно следующим образом.
class MY_DIALOG: public CDialog
{
public:
MY_DIALOG (char *DialogName, CWnd *Owner): CDialog(DialogName, Owner) { };
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP (MY_DIALOG, CDialog)
//<указание типов обрабатываемых сообщений и имен их обработчиков>
END_MESSAGE_MAP()
MY_DIALOG - наследуемый пользовательский класс от класса CDialog, обслуживающий диалоговое окно <ID_имя_диалогового_окна>, как производный от библиотечного класса MFC - CDialog. MY_DIALOG (char *DialogName, CWnd *Owner) - конструктор класса MY_DIALOG, где DialogName - ID-имя диалогового окна, Owner - его владелец (здесь, как правило, текущее окно, т.е. this).
|
MFC. Пример описания пользовательского класса для работы с диалоговым окном.
Описать пользовательский класс MY_DIALOG для создания экземпляров пользовательских диалоговых окон можно следующим образом.
class MY_DIALOG: public CDialog
{
public:
MY_DIALOG (char *DialogName, CWnd *Owner): CDialog(DialogName, Owner) { };
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP (MY_DIALOG, CDialog)
//<указание типов обрабатываемых сообщений и имен их обработчиков>
END_MESSAGE_MAP()
MY_DIALOG - наследуемый пользовательский класс от класса CDialog, обслуживающий диалоговое окно <ID_имя_диалогового_окна>, как производный от библиотечного класса MFC - CDialog. MY_DIALOG (char *DialogName, CWnd *Owner) - конструктор класса MY_DIALOG, где DialogName - ID-имя диалогового окна, Owner - его владелец (здесь, как правило, текущее окно, т.е. this).
|
|
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!