Visual C++. Описание стандартных классов - CButton

ОГЛАВЛЕНИЕ


CButton

Класс CButton содержит функции для работы с кнопками Windows. Кнопка представляет собой маленькое, прямоугольное дочернее окно, которое может находиться в двух состояниях, переключаемых щелчками мыши или клавишами клавиатуры. Данный элемент управления может использоваться самостоятельно или в группах. В зависимости от типа кнопки связанный с ней текст может располагаться внутри данного элемента управления или рядом с ним. Изменение состояния кнопки обычно отражается при ее отображении на экране. Типичным примером кнопок являются флажки, переключатели и простые кнопки. К какому из данных типов кнопок будет относиться объект класса CButton, определяется ее стилем, задаваемым в функции Create при его создании. Класс CBitmapButton, производный от класса CButton позволяет получать кнопки, в которых вместо текста помещается растровое изображение. Класс CBitmapButton позволяет использовать различные битовые образы для нажатой, отжатой, получившей фокус ввода и недоступной кнопок. Объект данного класса может быть создан с использованием шаблона диалога или непосредственно пользователем. В обоих случаях сначала вызывается конструктор класса CButton, создающий объект данного класса, а затем вызывается функция Create, создающая кнопку Windows и связывающая ее с объектом класса CButton. Объекты класса, производного от класса CButton можно создавать за один шаг. Для этого в конструкторе данного класса нужно вызвать функцию Create. Для обработки сообщений Windows, посылаемых объектом класса кнопки объекту класса родительского окна (обычно это объект класса, производного от класса CDialog), необходимо добавить в карту сообщений родительского класса соответствующие макросы, а в сам класс - включить соответствующие функции обработки сообщений. Макрос карты сообщений имеет следующий формат: ON_Notification(id, memberFxn), где параметр id определяет идентификатор дочернего окна элемента управления, а memberFxn - имя функции обработки данного сообщения. Функция обработки сообщения объявляется следующим образом: afx_msg void memberFxn(); Наиболее часто в качестве макросов обработки сообщений от кнопок используются:

  • ON_BN_CLICKED - пользователь нажал кнопку;
  • ON_BN_DOUBLECLICKED - пользователь дважды нажал кнопку.

Объект класса CButton, созданный с использованием ресурса диалога автоматически уничтожается при закрытии диалогового окна. При создании данного объекта пользователем он должен сам удалить его. Если данный объект создавался в куче с использованием оператора new, то при закрытии родительского окна он должен быть уничтожен с использованием оператора delete. Если же он создавался в стеке или был внедрен в объект класса родительского окна диалога, то он уничтожается автоматически. Описание данного класса содержится в файле заголовка afxwin.h.