Сообщений 6    Оценка 26        Оценить  
Система Orphus

Класс SButton

Автор: Сергей Иванов
Опубликовано: 24.11.2001
Исправлено: 13.03.2005
Версия текста: 1.0

Класс SButton
Демонстрационная программа DemoSButton


DemoSButton

Класс SButton позволит вам снабдить программу кнопками, содержащими и картинки, и текст. Вы сможете установить для кнопки целый ряд различных стилей. Кроме того, класс SButton может самостоятельно построить по заданному цветному изображению чёрно-белое, которое будет использоваться, когда кнопка не в фокусе.

Класс написан с использованием библиотеки MFC и может использоваться только в MFC-проектах.

Использование класса SButton

Чтобы воспользоваться классом SButton, в первую очередь необходимо включить в проект файлы SButton.cpp и SButton.h. Затем каждую кнопку, которую вы хотите наделить дополнительными возможностями, нужно связать с объектом класса SButton. Для этого есть два пути:

  1. С помощью ClassWizard`а связать кнопку с объектом класса CButton, а затем в заголовочном файле заменить CButton на SButton.
  2. Добавить в класс диалога (или другого окна, содержащего кнопку) объект класса SButton, а затем вызвать для этого объекта функцию-член CWnd::SubclassWindow, указав в качестве параметра хэндл кнопки. Можно использовать и функцию CWnd::SubclassDlgItem. В случае с диалогом удобнее всего проделать это в обработчике OnInitDialog.

После того как объект класса SButton связан с кнопкой, вы можете вызывать его методы, чтобы настроить её внешний вид и поведение. Рассмотрим пример, иллюстрирующий все эти шаги (за более подробным примером обратитесь к демонстрационному проекту DemoSButton).

#include "SButton.h"

class CDlg : public CDialog
{
 SButton m_btnBegin;

// Construction
public:
 CDlg(CWnd* pParent = NULL); // standard constructor

 ...
}  
 
 ...

BOOL CDlg::OnInitDialog()
{
 CDialog::OnInitDialog();

 ...

 m_btnBegin.SubclassWindow(GetDlgItem(IDC_BEGIN)->GetSafeHwnd());
 // Далее можно вызов функций класса SButton
 // для настройки вида кнопки

 ...
}

Методы класса SButton

В этом разделе приводится полный список методов класса SButton, которые вы можете использовать в вашей программе.

Метод SetImages

bool SetImages( 
  DWORD dwResourceID, 
  DWORD dwResourceID_BW=NULL, 
  bool bHotImage=true, 
  UINT uType=IMAGE_ICON);

Связывает с кнопкой изображения.

ПРИМЕЧАНИЕ
В случае toggle-button рекомендуется использовать icon`ки, так как bitmap`ы не имеют прозрачных областей, и поэтому в нажатом состоянии могут наблюдаться дефекты.

Так как функция SetImages сильно перегружена (функционально), то приведём несколько способов её использования.

Метод SetStyleFlat

void SetStyleFlat(bool bFlat=true);

Определяет, будет ли кнопка "плоской".

Метод SetStyleHotText

void SetStyleHotText(bool bHot=true);

Определяет, будет ли текст кнопки менять цвет при наведении курсора мыши.

Метод ShowFocus

void ShowFocus(bool bShow=true);

Определяет, будет ли фокус ввода показываться на кнопке в виде пунктирной рамочки.

Метод SetFrameWidth

void SetFrameWidth(int nWidth);

Устанавливает толщину рамки кнопки.

Параметр nWidth может принимать одно из следующих значений: NO_FRAME - нет рамки, THIN_FRAME - тонкая рамка, THICK_FRAME - толстая рамка.

Метод SetImagePosition

void SetImagePosition(int nImPos);

Устанавливает позицию изображения относительно текста.

Параметр nImPos может принимать одно из следующих значений: IMGPOS_LEFT - слева от текста, IMGPOS_TOP - над текстом.

Метод SetStyleToggle

void SetStyleToggle(bool bToggle=true);

Определяет, будет ли кнопка функционировать как toggle-button, т.е. находится в одном из двух состояний - нажата или отжата.

Метод IsPushed

bool IsPushed();

Проверяет, нажата ли кнопка (если установлен стиль toggle-button).

Метод SetPushed

void SetPushed(bool bPushed=true);

Устанавливает кнопку в нажатое или отжатое состояние (если установлен стиль toggle-button).


Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
    Сообщений 6    Оценка 26        Оценить