break;
}
}

Вызов диалогового окна производится при помощи макроса TIMESTRING, объявление которого приведено в листинге 10.5.

Листинг 10.5

#define TIMESTRINGCw. t. s) {char str [4096]; sprintf(str ."«s \n *s\#t.s):
DialogBoxParam(GetModuleHandle(NULL)."DLG_ABOUT".w.\
(DLGPR0C)Di a1ogAbout.(LPARAM)str_);}

Этот макрос объявляется в модуле Utils.h. Макросу передаются дескриптор окна-собственника диалога, время отображения диалогового окна и выводимый в нем текст. Текст из переменной s выводится в несколько строк. Переход на новую строку диалога производится при помощи последовательности \п или U.

Диалоговая процедура DialogAboutC ), вызываемая этим макросом, находится в модуле DialogAbout.cpp, который можно найти на компакт-диске.

Прототипы используемых в проекте функций помещены в файл Main.h.

Скелетный проект

Задания для самостоятельного выполнения

1. При работе проекта MenuModif в момент останова движения командой Graphics выводившееся подменю стирает часть рабочей области. Для устранения этого недостатка вставьте в оконную процедуру обработку сообщения WM_PAI NT и сделайте другие необходимые изменения в проекте MenuModif.

2. Принятое в проекте деление окна на две области связано с определенными неудобствами. Так, например, графические примитивы отсекаются по границам окна, поэтому изображение может пересекать границу между областями и закрывать сообщения. Также следует учесть, что координаты в области сообщений отсчитываются не от нуля, а от значения, заданного в дополнительной глобальной переменной. Замените области двумя окнами, нижнее из которых не имеет меню и области заголовка. Можно даже вложить оба окна в третье окно, которое не имеет даже рамки и кисти для закраски фона. Из-за описанных особенностей третье окно будет невидимым и не потребует затрат времени на обработку сообщения WM_ERASEBKGND.

3. Дополните проект, созданный в задании 2, средствами вывода подсказки о назначении терминального пункта меню, когда курсор задерживается на нем более чем на одну секунду.


⇐ Предыдущая| |Следующая ⇒