Mfc 如何在C按钮外绘制

Mfc 如何在C按钮外绘制,mfc,Mfc,我必须从一个C按钮(两个红色和绿色的小矩形)向左(而不是向内)画。我不知道如何以正确的方式实现这一点。我可以在DrawItem()中使用父DC的设备上下文来绘制它吗 void CSpecialButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { .. CDC* parentDC = GetParent()->GetDC(); CRect rcClrRed; .. calculate rcClrRed; parentD

我必须从一个C按钮(两个红色和绿色的小矩形)向左(而不是向内)画。我不知道如何以正确的方式实现这一点。我可以在DrawItem()中使用父DC的设备上下文来绘制它吗

void CSpecialButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{ ..
  CDC* parentDC = GetParent()->GetDC();
  CRect rcClrRed; 
  .. calculate rcClrRed;
  parentDC->FillSolidRect(rcRed, RGB(255,0,0);
}

为什么按钮需要画在旁边?为什么父母不能画画?为什么旁边不能有第二个控件?为什么按钮不能更大一些,在里面画矩形和按钮的东西呢?因为按钮太多了(~20个)。这意味着额外的2 x 20 controlsHow是否要处理重绘?如果需要重新绘制父级的客户端区域,Windows将通知父级。Windows不知道您的恶意按钮想要在其区域之外进行绘制。你的设计被破坏了。请看我的第一条评论,以获得更好的解决方案。好的,画外画被破坏了!用户不希望按钮中有矩形。所以我现在在DrawItem(..)中成功地绘制了一个调整大小的按钮。我让一个左区域自由绘制矩形。我可以用我想要的颜色给自由区域上色,但我也希望它透明。使用空心笔刷绘制在此处不起作用:(