Возможно, слишком поздно для вас, но пример TabControl, поставляемый с MFC, показывает вам, как это сделать.По сути, вы используете класс с именем CToolbarLabel (который реализован для вас в образце) так же, как вы используете CMFCToolBarButton и consorts:
m_wndToolBar.ReplaceButton(ID_LABEL, CToolbarLabel(ID_LABEL, L"Some label: "));
Для полноты, вот реализация CToolbarLabel:
Заголовок:
#pragma once
class CToolbarLabel : public CMFCToolBarButton
{
DECLARE_SERIAL(CToolbarLabel)
public:
CToolbarLabel (UINT nID = 0, LPCTSTR lpszText = NULL);
virtual void OnDraw (CDC* pDC, const CRect& rect, CMFCToolBarImages* pImages,
BOOL bHorz = TRUE, BOOL bCustomizeMode = FALSE,
BOOL bHighlight = FALSE,
BOOL bDrawBorder = TRUE,
BOOL bGrayDisabledButtons = TRUE);
};
Файл реализации:
#include "stdafx.h"
#include "ToolbarLabel.h"
IMPLEMENT_SERIAL(CToolbarLabel, CMFCToolBarButton, 1)
CToolbarLabel::CToolbarLabel (UINT nID, LPCTSTR lpszText)
{
if (lpszText != NULL) {
m_strText = lpszText;
}
m_bText = TRUE;
m_nID = nID;
m_iImage = -1;
}
void CToolbarLabel::OnDraw (CDC* pDC, const CRect& rect, CMFCToolBarImages* pImages,
BOOL bHorz, BOOL /*bCustomizeMode*/, BOOL /*bHighlight*/,
BOOL /*bDrawBorder*/, BOOL /*bGrayDisabledButtons*/)
{
UINT nStyle = m_nStyle;
m_nStyle &= ~TBBS_DISABLED;
CMFCToolBarButton::OnDraw (pDC, rect, pImages, bHorz, FALSE,
FALSE, FALSE, FALSE);
m_nStyle = nStyle;
}
Как вы можете видеть, он очень легкий и использует только то, что кнопка уже предоставляет, поэтому он работает и для визуальных тем..