Программирование >>  Программирование на языке c++ 

1 ... 119 120 121 [ 122 ] 123 124 125 ... 159


дить на экран некоторые, заданные в самой системе 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

Button

s prcs OK

Puc. 9.17. Результаты выполнения программы

Иконка

Button

was pressed

1 YEsI 1 Nol

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 показана возможная последовательность действий при нажатии левой кнопки манипулятора мышь . При



1 ... 119 120 121 [ 122 ] 123 124 125 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика