Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Топ:
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Дисциплины:
2022-10-29 | 31 |
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).
|
|
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!