Статья: Реализация стиля Office XP

Недавно я пытался найти в сети ToolBar-элемент в стиле Office XP. Поиски мои не увенчались успехом - все элементы были либо сложны в встраивании в проект, либо платны. Тогда я принял отчаянные меры - написал сам... А, как оказалось, в написании тулбара не было оссобенных проблем. Вот как я сделал.

Создал MFC SDI проект с именем StyleXP. С помощью ClassWizard'а добавил новый класс CToolBarXP, наследованный от CToolBar (CToolBar в списке нет, но я выбрал CToolBarCtrl и вручную изменил имя предка). Дальше встал вопрос: "Какие функции перегружать?". Просмотрев весь предоставленный список в ClassWizard'е, я выбрал WM_PAINT. Долго я с ним провозился, но таки вышло вот что:

void CToolBarXP::OnPaint()

{

CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here

CRect rt, rItem;

COLORREF face, shdw, cbtn;

BYTE r,g,b;

WORD BtnLength;

// Берём клиентскую область эл-та

GetClientRect(rt);

// Выщитываем цвет бэк-граунда(для пущей красоты

// я решил слегка отклониться от стандартного цвета).

face = GetSysColor(COLOR_3DFACE);

r = GetRValue(face)+10;

g = GetGValue(face)+10;

b = GetBValue(face)+10;

face = PALETTERGB(r,g,b);

// Таким же образом выщитываем цвет выделенной кнопки...

cbtn = GetSysColor(COLOR_3DFACE);

r = GetRValue(cbtn)-10;

g = GetGValue(cbtn)-10;

b = GetBValue(cbtn)-10;

cbtn = PALETTERGB(r,g,b);

// ицветрамки

shdw = GetSysColor(COLOR_3DSHADOW);

r = GetRValue(shdw)+10;

g = GetGValue(shdw)+10;

--> ЧИТАТЬ ПОЛНОСТЬЮ <--

К-во Просмотров: 358
Бесплатно скачать Статья: Реализация стиля Office XP