Сообщений 0 Оценка 15 Оценить |
Исходный текст функции - 3 Kb
Демонстрационный пример - 76 Kb
Demo CButtonEx
CButtonEx позволяет создавать "плоские" кнопки с картинками и\или текстом. Класс CButtonEx является наследником CBitmapButton, входящего в WTL 3.1. и, поэтому, наследует все основные свойства (трэкинг мыши, поддержка подсказок и т.д) от своего предка, плюс к этому, умеет отображать как отдельный текст кнопки, так и текст с картинкой. Также корректно, в отличии от CBitmapButton, отображает "disabled mode" кнопки, если для него не установлено изображение.
ИСПОЛЬЗОВАНИЕ КЛАССА ВОЗМОЖНО ТОЛЬКО В WTL-ПРОЕКТАХ!
Перво-наперво необходимо включить заголовочный файл CButtonEx.h в проект и объявить экземпляр класса в диалоговом окне:
#include "CButtonEx.h" class CMainDlg : public CDialogImpl<CMainDlg> { public: enum { IDD = IDD_MAINDLG }; BEGIN_MSG_MAP(CMainDlg) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout) COMMAND_ID_HANDLER(IDOK, OnOK) COMMAND_ID_HANDLER(IDCANCEL, OnCancel) END_MSG_MAP() ... ... private: CButtonEx m_b1; }; |
Затем, в функции инициализации окна, вызвать метод SubclassWindow. Это является обязательным действием.
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { ... ... // Обязательное действие m_b1.SubclassWindow(GetDlgItem(IDC_BUTTON1)); // Дополнительные действия m_b1.CreateImages(IDB_BITMAP1, 24, 2, 0x00ff00ff); m_b1.SetImages(0); return TRUE; } |
BOOL SubclassWindow(HWND hWnd) |
Подменяет функцию обработки сообщений на встроенную в CBitmapButton
DWORD SetExtendedStyle(DWORD dwExtendedStyle, DWORD dwMask) |
Модифицирует расширенный стиль кнопки.
Класс CButtonEx, помимо расширенных стилей CBitmapButton, имеет 7 дополнительных.
BTNEX_HCENTER | центровать изображение по горизонтали |
---|---|
BTNEX_VCENTER | центровать изображение по вертикали |
BTNEX_LEFTIMAGE | отображать картинку слева, а текст - справа |
BTNEX_RIGHTIMAGE | отображать картинку справа, а текст - слева |
BTNEX_TOPIMAGE | отображать картинку вверху, а текст - внизу |
BTNEX_BOTTOMIMAGE | отображать картинку внизу, а текст - вверху |
BTNEX_CHECKBUTTON | переводит кнопку в режим "check button" |
ПРИМЕЧАНИЕ Направления указаны друг относительно друга (текст/картинка). |
По умолчанию, в конструктор класса передается следующая комбинация расширенных стилей: BMPBTN_AUTO3D_SINGLE | BMPBTN_HOVER | BTNEX_VCENTER | BTNEX_HCENTER | BTNEX_LEFTIMAGE
void SetFont(HFONT hFont) |
Устанавливает шрифт для отображения текста.
void SetTextColor(COLORREF crText) |
Устанавливает цвет отображения текста.
BOOL CreateImages(_U_STRINGorID bitmap, int cx, int nGrow, COLORREF crMask) |
Инициализирует внутренний экземпляр типа CImageList. По параметрам, функция идентична CImageList::Create. По умолчанию используется системный ImageList, однако, если, по какой-то причине, вы не хотите его использовать, то можете определить макрос, который позволяет использовать встроенный СMaskedImage.
#define _BTNEX_SELFIMAGELIST_ |
BOOL IsChecked() |
Проверяет, в каком состоянии находится кнопка. Имеет смысл, только при установленном стиле BTNEX_CHECKBUTTON.
void SetChecked(BOOL bCheck = true) |
Устанавливает состояние кнопки. Имеет смысл, только при установленном стиле BTNEX_CHECKBUTTON.
ПРИМЕЧАНИЕ Выше описаны только те функции, которые были добавлены или изменены. За более подробной информацией обращайтесь к описанию CBitmapButton в документации по WTL |
#define _BTNEX_MEMPAINT_ |
Сообщений 0 Оценка 15 Оценить |