15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту

 

Скины для Ваших кнопок


Автор: Davide Pizzolato

Картинка

Итак, как добавить скины к Вашим кнопкам:

  1. Добавьте "xSkinButton.cpp" и "xSkinButton.h" в Ваш проект.
  2. Включите "xSkinButton.h" в заголовочный файл, где определены элементы управления
  3. В редакторе ресурсов отметьте свойство "Owner Draw" для, кнопок, которые Вы хотите изменить
  4. Создайте (или отредактируйте) переменные от CxSkinButton для этих кнопок. Если Class Wizard не показывает тип CxSkinButton, выберите CButton, а затем отредактируйте код вручную.
  5. Добавьте ресурс bitmap для кнопок:
    • NORMAL bitmap: по умолчанию изображение кнопки.
    • DOWN bitmap: изображение нажатой кнопки.
    • OVER bitmap:(необязательно) изображение при наведении курсора мыши на кнопку. Если NULL, то будет использоваться изображение NORMAL.
    • DISABLED bitmap: (необязательно) изображение для недоступной кнопки. Если NULL, то так же будет использоваться изображение NORMAL.
    • MASK bitmap: (необязательно) маска для региона кнопки. По умолчанию прозрачный цвет RGB(255,255,255).
  6. В инициализации окна добавьте методы CxSkinButton:
    BOOL CxSkinButtonDemoDlg::OnInitDialog()
    {
    //	...
    	m_btn1.SetTextColor(RGB(255,0,0));
    	m_btn1.SetToolTipText("Button1");
    	m_btn1.SetSkin(IDB_B1NORM,IDB_B1DOWN,IDB_B1OVER,
                                    IDB_B1GRAY,IDB_B1MASK,0,0,0);
    //	...
    

    Функция SetSkin имеет следующие параметры:
    void CxSkinButton::SetSkin(UINT normal,UINT down,UINT over,UINT disabled,UINT mask, short drawmode, short border, short margin)

    • normal,down,over,disabled,mask =  IDшники ресурсов
    • drawmode = если маска не NULL, то можно использовать 1 (stretch) или 2 (tiled).
    • border = если маска не NULL либо кнопка не прямоугольная, то можно использовать 1 для рисования стандартной 3D рамки вокруг кнопки.
    • margin = если маска не NULL либо кнока не прямоугольная, можно использовать этот параметр для рисования точечной окаймовки кнопки когда она получает фокус.