Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

ButtonST - плоские кнопки


Автор: Davide Calabro'.

Требования: Win95/98 NT4, VC 5.0

ST_CButton flat

Описание

CButtonST это класс, наследуемый от MFC класса CButton.
С этим классом в Вашем приложении можно использовать как стандартные кнопки, так и необычные и плоские кнопки.

Возможности CButtonST:

  • Стандартные свойства CButton
  • поддержка иконок 16x16 32x32 48x48 16 и 256 цветов
  • Поддержка прозрачных кнопок
  • Изменение вида кнопки на лету с плоской в стандартную
  • Кнопка может иметь две иконки. Одна, когда курсор мыши на кнопке и другая, когда курсор за пределами кнопки.
  • Возможнось использования в DLL
  • Возможность динамического создания
  • Каждая кнопка может иметь собственный курсор
  • компилировалось в Visual C++ v5.0
  • Full source code included!
  • It's free!

Как включить CButtonST в Ваше приложение

    Добавьте в Ваш проект следующие файлы:
 
     
 
         BtnST.h
 
         BtnST.cpp
 
     
 
     С помощью редактора диалога создайте стандартную кнопку и назовите, например, IDOK
 
     (Вам не нужно создавать собственный прорисовщик кнопки) и создайте переменную член:
 
     
 
         CButtonST m_btnOk;
 
     
 
     Теперь с помощью редактора ресурсов, создайте иконку и назовите, например, IDI_OK256
 
     Так же Вы можете импортировать её из уже существующей, такой как в демопроекте
 
     (т.e. 32x32x256_Ok.ico).
 
 
 
     Используйте иконки размером 32x32 пикселей. Иконки друго размера будут отображаться
 
     неправильно.
 
 
 
     Теперь свяжите кнопку с CButtonST. В процедуре OnInitDialog:
 
     
 
         // Вызываем базовый метод
 
         CDialog::OnInitDialog();
 
 
 
         // Создаём кнопку IDOK
 
         m_btnOk.SubclassDlgItem(IDOK, this);
 
         // Устанавливаем иконку для кнопки
 
         m_btnOk.SetIcon(IDI_OK256);
 
     
 
     Вы можете использовать для одной кнопки. Первая иконка отображается когда
 
     курсор мышки находится на кнопке. Вторая иконка отображается когда
 
     курсор мышки находится за пределами кнопки. Если Вы используете одну и ту же иконку,
 
     но одну цветную, а другую чёрно белую, то получится красивый эффект!
 
     
 
         // Добавляем две иконки
 
         m_btnOk.SetIcon(IDI_OK256, IDI_OK256_BW);
 
     
 
     Иконки должны быть одинакового размера!
 
 
 
     По умолчанию на кнопке иконка будет располагаться слева, а текст справа.
 
     Если Вам нужно, чтобы иконка располагалась вверху, а текст внизу, то
 
     необходимо установить выравнивание кнопки:
 
     
 
         // Выравниваем иконку вертикально
 
         m_btnOk.SetAlign(CButtonST::ST_ALIGN_VERT);
 
     
 
     Так же, по умолчанию, кнопка будет иметь плоский стиль. Если Вам нужна
 
     стандартная кнопка, то используйте следующий код:
 
     
 
         // Рисуем стандартную кнопку
 
         m_btnOk.SetFlat(FALSE);
 
     
 
     Для плоских кнопок по умолчанию высвечивается бордюр, когда курсор мышки проходит
 
     над кнопкой. Вы можете запретить этот эффект (в примере это кнопка с CD-ROM!)
 
     
 
         // Не прорисовывать бордюр для кнопки
 
         m_btnOk.DrawBorder(FALSE);
 
     
 
     Для каждой кнопки можно установить собственные цвета.
 
         
 
         // Устанавливаем цвета кнопок
 
         COLORREF crStandard = ::GetSysColor(COLOR_BTNFACE);
 
         m_btnOk.SetInactiveBgColor(crStandard - RGB(20,20,20));
 
         m_btnOk.SetActiveBgColor(crStandard + RGB(20,20,20));
 
         m_btnOk.SetInactiveFgColor(RGB(0,255,0));
 
         m_btnOk.SetActiveFgColor(RGB(255,0,0));
 
     
 
     Каждая кнопка может иметь свой курсор.
 
     Например, кнопка, которая запускает интернет браузер, изменяет курсор мышки
 
     на ручку, при наведении на неё курсора!
 
     
 
         // Устанавливаем ручку вместо курсора
 
         m_btnOk.SetBtnCursor(IDC_HAND);
 
     
 
     Каждый приличный элемент управления должен иметь свой текст в виде подсказки!
 
     Небольшой текст отображается, когда курсор останавливается на кнопке.
 
     
 
         // Добавляем небольшой текст к кнопке
 
         m_btnOk.SetTooltipText(IDS_TT_OK);
 
     
 
     Для добавления красочности интерфейсу, можно задать прозрачность кнопке:
 
         
 
         // Делаем прозрачную кнопку
 
         m_btnOk.DrawTransparent();
 
     
 
 
 
 
 
 

CButtonST - функции члены

 

void SetIcon(int nIconInId, int nIconOutId = NULL)
Устанавливаем иконку(и) для кнопки

  • nIconInId
    Ресурс иконки (когда курсор мышки внутри)
  • nIconOutId
    Ресурс иконки (когда курсор мышки снаружи)
    Если NULL то будет использоваться только первая иконка

Пример:
m_btnOk.SetIcon(IDI_OK256);
m_btnOk.SetIcon(IDI_OK256, IDI_OK256_BW);
m_btnOk.SetIcon(NULL); // Для получения кнопки без иконки


void SetAlign(int nAlign)
Устанавливаем положение иконки (если она определена)

аргументы функции:

  • ST_ALIGN_HORIZ
    Иконка слева и текст справа (по умолчанию)
  • ST_ALIGN_VERT
    Иконка наверху и текст внизу

Пример:
m_btnOk.SetAlign(CButtonST::ST_ALIGN_VERT);

int GetAlign()
Получаем текущее положение иконки (смотрите SetAlign о возможных значениях)

Пример:
int nRetValue = m_btnOk.GetAlign();

void SetFlat(BOOL bState = TRUE)
Установить стиль кнопки ("плоский" или стандартный)

Аргументы функции:

  • TRUE
    Кнопка рисуется как "плоская" (по умолчанию)
  • FALSE
    Кнопка рисуется как стандартная

Пример:
m_btnOk.SetFlat();
m_btnOk.SetFlat(FALSE);


BOOL GetFlat()
Возвращает текущий стиль кнопки (смотрите SetFlat о возможных значениях)

Пример:
int nRetValue = m_btnOk.GetFlat();

void DrawBorder(BOOL bEnable = TRUE)
Отображение бордюра ON/OFF (только для "плоских" кнопок)

Входные значения:

  • TRUE
    Бордюр кнопки отображается (по умолчанию)
  • FALSE
    Бордюр не отображается

Пример:
m_btnOk.DrawBorder();
m_btnOk.DrawBorder(FALSE);


static const short GetVersionI()
static const char* GetVersionC()

Возвращает версию CButtonST

Пример:
int nVer = CButtonST::GetVersionI(); // Делённое на 10 для получения глобального номера версии
char szVer[20];
strcpy(szVer, CButtonST::GetVersionC());


void SetShowText(BOOL bShow = TRUE)
Добавить или удалить текст (caption) из кнопки

Входные значения:

  • TRUE
    Текст отображается
  • FALSE
    Текст не отображается (но существует!)

Пример:
m_btnOk.SetShowText();
m_btnOk.SetShowText(FALSE);


BOOL GetShowText()
Возвращает текущее состояние текста (отображается или нет)

Пример:
int nRetValue = m_btnOk.GetShowText();

void SetDefaultActiveFgColor()
Устанавливает цвет текста по умолчанию (когда курсор над кнопкой)
Она автоматически вызывается, когда создаётся кнопка.

Пример:
m_btnOk.SetDefaultActiveFgColor();

void SetDefaultActiveBgColor()
Устанавливает цвет кнопки по умолчанию (когда курсор над кнопкой)
Она автоматически вызывается, когда создаётся кнопка.

Пример:
m_btnOk.SetDefaultActiveBgColor();

void SetDefaultInactiveFgColor()
Устанавливает цвет текста по умолчанию (когда курсор за пределами кнопки)
Она автоматически вызывается, когда создаётся кнопка.

Пример:
m_btnOk.SetDefaultInactiveFgColor();

void SetDefaultInactiveBgColor()
Устанавливает цвет кнопки по умолчанию (когда курсор за пределами кнопки)
Она автоматически вызывается, когда создаётся кнопка.

Пример:
m_btnOk.SetDefaultInactiveBgColor();

void SetActiveFgColor(COLORREF crNew, BOOL bRepaint = FALSE)
Устанавливаем цвет текста (когда курсор над кнопкой)

Входные значения:

  • crNew
    Новый цвет
  • bRepaint
    Если TRUE , то кнопка немедленно перерисовывается

Пример:
m_btnOk.SetActiveFgColor(RGB(255, 255, 0));

void SetActiveBgColor(COLORREF crNew, BOOL bRepaint = FALSE)
Устанавливаем цвет кнопки (когда курсор над кнопкой)

Входные значения:

  • crNew
    Новый цвет
  • bRepaint
    Если TRUE , то кнопка немедленно перерисовывается  

Пример:
m_btnOk.SetActiveBgColor(RGB(128, 128, 128));
m_btnOk.SetActiveBgColor(::GetSysColor(COLOR_BTNFACE), TRUE);


void SetInactiveFgColor(COLORREF crNew, BOOL bRepaint = FALSE)
Устанавливаем цвет текста (когда курсор за пределами кнопки)

Входные значения:

  • crNew
    Новый цвет 
  • bRepaint
    Если TRUE , то кнопка немедленно перерисовывается

Пример:
m_btnOk.SetInactiveFgColor(RGB(255, 255, 255));

void SetInactiveBgColor(COLORREF crNew, BOOL bRepaint = FALSE)
Устанавливаем цвет кнопки (когда курсор за пределами кнопки)

Входные значения:

  • crNew
    Новый цвет
  • bRepaint
    Если TRUE , то кнопка немедленно перерисовывается

Пример:
m_btnOk.SetInactiveBgColor(RGB(128, 128, 128));

const COLORREF GetActiveFgColor()
Возвращает текущий цвет текста (когда курсор над кнопкой)

Пример:
COLORREF crCurrent = m_btnOk.GetActiveFgColor();

const COLORREF GetActiveBgColor()
Возвращает текущий цвет кнопки (когда курсор над кнопкой)

Пример:
COLORREF crCurrent = m_btnOk.GetActiveBgColor();

const COLORREF GetInactiveFgColor()
Возвращает текущий цвет текста (когда курсор за пределами кнопки)

Пример:
COLORREF crCurrent = m_btnOk.GetInactiveFgColor();

const COLORREF GetInactiveBgColor()
Возвращает текущий цвет кнопки (когда курсор за пределами кнопки)

Пример:
COLORREF crCurrent = m_btnOk.GetInactiveBgColor();

void SetFlatFocus(BOOL bDrawFlatFocus, BOOL bRepaint = FALSE)
Разрешить/Запретить прорисовку фокуса
Это имеет значение только для "плоских" кнопок; на стандартных кнопках всегда рисуется фокус.

Входные значения:

  • bDrawFlatFocus
    Когда TRUE , то "плоские" кнопки будут иметь фокус
    По умолчанию "плоские" кнопки не имеют прямоугольника фокуса
  • bRepaint
    Если TRUE , то кнопка немедленно перерисовывается

Пример:
m_btnOk.SetFlatFocus(TRUE);
m_btnOk.SetFlatFocus(FALSE, TRUE);


BOOL GetFlatFocus()
Возвращает состояние фокуса
Это имеет значение только для "плоских" кнопок; на стандартных кнопках всегда рисуется фокус.

Возвращаемые знацения:

  • TRUE
    Фокус прорисовывается
  • FALSE
    Фокус не прорисовывается

Пример:
BOOL bDrawFlatFocus = m_btnOk.GetFlatFocus();

BOOL SetBtnCursor(int nCursorId = -1)
Присваивает определённый курсор кнопке
Курсор мышки изменяется про попадании на кнопку.

Входные значения:

  • nCursorId
    Идентификатор ресурса иконки

Выходные значения:

  • TRUE
    Курсор присвоен
  • FALSE
    Не удаётся загрузить ресурс курсора

Пример:
BOOL bRetValue = m_btnOk.SetBtnCursor(IDC_HAND);
m_btnOk.SetBtnCursor(); // Для удаления присвоенного курсора


void SetTooltipText(int nId, BOOL bActivate = TRUE)
void SetTooltipText(CString* spText, BOOL bActivate = TRUE)

Приваиваем небольшой текст кнопки

Входные значения:

  • nId
    Ресурс строки, содержащей текст
  • spText
    Указатель на объект CString содержащий небольшой текст (не может быть NULL)
  • bActivate
    Если TRUE текст активен (и показывается, когда курсор останавливается над кнопкой)

Используйте ActivateTooltip(), чтобы разрешить/запретить текст (см. ниже)

Пример:
m_btnOk.SetTooltipText(IDS_TT_OK);
m_btnOk.SetTooltipText(&CString("Some text"), FALSE); // Assign a tooltip but create it disabled


void ActivateTooltip(BOOL bEnable = TRUE)
Разрешить/Запретить отображение краткого текста

Входные значения:

  • bEnable
    Если TRUE - текст будет активным (и показываться, если курсор мышки остановится на кнопке)

Пример:
m_btnOk.ActivateTooltip(FALSE);

void DrawTransparent()
Рисует кнопку прозрачной

Пример:
m_btnOk.DrawTransparent();

Downloads

Скачать демо-проект - 249 KB



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS