|
Программирование >> Программирование на языке c++
дить на экран некоторые, заданные в самой системе WINDOWS, кнопки. Например, если необходимо вывести кнопки YES, NO и CANCEL, нужно назначить: type = МВ YESNOCANCEL (рис. 9.16). Если нажать кнопку со значением # (например, со значением YES), то функция MessageBox вернет значение ID# (например, ID YES). В нашем примере функция HandleButtonMessage выводит на экран окно сообщений, показанное на рис. 9.17. Если нажать кнопку ОК, то программа завершит работу. При необходимости в окне сообщений можно вывести иконки, определенные в самой системе WINDOWS. Для этих целей параметр type задается в следующем виде: type = buttons type icon type Например, для окна сообщений, показанного на рис. 9.18, необходимо вызвать функцию MessageBox MessageBox( \was pressed , Button , MB YESNO I MBJCONQUIESTION); Выше мы рассмотрели, как обрабатывать простейшие сообщения пользователя. Общий синтаксис макро EV COMMAND задается в виде EV COMMAND(CMD,HandlerName) Здесь макро вызывает функцию HandlerName, если получено сообщение CMD. Функция HandlerName описывается в виде void HandlerName{void); Обработка сообщений пользователя может вьшолняться и с помощью других макро. Информацию о них можно найти в соответствующих руководствах по программированию фирмы Borland. Рассмотрим теперь, как осуществляется обработка сообщений системы WINDOWS. Такие сообщения будут генерироваться автоматически при выполнении определенных действий, например: при нажатии клавиши клавиатуры; при нажатии кнопки манипулятора мышь при перемещении манипулятора мышь ; при закрытии окна и т. п. Окно сообщении Заголовок Текст в окне сообщении Главное окно I. Нажатие 2. Возвращается значение 1dyes 1. Нажатие 2. Возвращается значение 1dcancel -7 ST 1 .Нажатие 2.Возвращается значение IDNO Рис. 9.16. Выход кнопок, которые определены в системе WINDOWS Наша кнопка Нате окно, сообтсний т\ button
Puc. 9.17. Результаты выполнения программы Иконка
Puc. 9.18. Вывод кнопки в окне сообщения Рассмотрим простейшую программу, которая выполняет некоторые действия при нажатии левой кнопки манипулятора мышь . #include <owl\applicat.h> #include <owl\framewin.h> class my app : public TApplication public: my app() : TApplicationO {} protected: virtual void InitMainWindow(void); class my win : public TWindow public: my win(TWindow* parent = 0); protected: void EvLButtonDown(UINT,TPoint&); void EvRButtonDown{UINT,TPoint&); DECLARE RESPONSE TABLE(my win); DEFiNE RESPONSE TABLE1{my win,TWindow) EV WM LBUTTONDOWN, EV WM RBUTTONDOWN, END RESPONSE TABLE; void my win :: EvLButtonDown(UINT,TPoint&) { MessageBoxCYou pressed the left button ); } void my win :: EvRButtonDown{UINT,TPoint&) { MessageBox( You pressed the right button ); } void my app :: InitMainWindowO { SetMainWindow(new TFrameWindow(0, New , new my win)); } int OwlMain(int char**) { return my app().Run{); } Ha рис. 9.19 показана возможная последовательность действий при нажатии левой кнопки манипулятора мышь . При
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |