Mfc CToolBar按钮的绘图文本标签--不同于Windows 7/10和Windows XP

Mfc CToolBar按钮的绘图文本标签--不同于Windows 7/10和Windows XP,mfc,toolbar,Mfc,Toolbar,我正在创建一个带有文本按钮的垂直工具栏(CToolBar,Visual Studio 2015和XP工具集)。下面是绘制文本标签的代码(为了简单起见略为缩写)(创建字体是为了垂直绘制文本) 应用程序在Windows 7或10中运行时没有问题,但在Windows XP中,文本标签的背景是白色的 导致Windows XP背景为白色的代码是否存在问题 请参阅以下图片(顶部图片为Windows 7或10屏幕截图,底部图片为Windows XP屏幕截图): (来源:) (来源:) // code fr

我正在创建一个带有文本按钮的垂直工具栏(CToolBar,Visual Studio 2015和XP工具集)。下面是绘制文本标签的代码(为了简单起见略为缩写)(创建字体是为了垂直绘制文本)

应用程序在Windows 7或10中运行时没有问题,但在Windows XP中,文本标签的背景是白色的

导致Windows XP背景为白色的代码是否存在问题

请参阅以下图片(顶部图片为Windows 7或10屏幕截图,底部图片为Windows XP屏幕截图):


(来源:)


(来源:)

// code from http://www.codeproject.com/Articles/19653/How-to-Create-a-Dynamic-ToolBar
m_dcMem.CreateCompatibleDC(dc);
m_hBitmap    = CreateCompatibleBitmap(dc->m_hDC, nWidth, nHeight);
m_pBitmap    = CBitmap::FromHandle(m_hBitmap);
m_pOldBitmap = m_dcMem.SelectObject(m_pBitmap);

//draw a filled rectangle with the background (window) color 
CRect rect(0, 0, nWidth, nHeight);
FillRect(m_dcMem.m_hDC, &rect, (HBRUSH)(COLOR_WINDOW));

m_dcMem.SetMapMode(MM_TEXT);
m_dcMem.SetBkMode(TRANSPARENT);
m_dcMem.SetTextColor(RGB(68, 68, 68));

//
... use m_dcMem.TextOut to draw text
//

if (m_pOldBitmap != NULL)
    m_dcMem.SelectObject(m_pOldBitmap);

m_dcMem.DeleteDC();

SetBitmap(m_hBitmap);