WEB开发网
开发学院软件开发VC Visual C++中删除托管对象、包装库及其他 阅读

Visual C++中删除托管对象、包装库及其他

 2008-11-12 19:26:24 来源:WEB开发网   
核心提示: 一旦风格设置为所有者描述的,每次需要 Windows? 绘制选项卡时,Visual C++中删除托管对象、包装库及其他(8),它都会发送 WM_DRAWITEM 消息,MFC 捕获这个消息并调用选项卡控件的虚函数 DrawItem,相信很快标准颜色就会比它们原先的颜色漂亮许多,否则您会产生

一旦风格设置为所有者描述的,每次需要 Windows? 绘制选项卡时,它都会发送 WM_DRAWITEM 消息。MFC 捕获这个消息并调用选项卡控件的虚函数 DrawItem,CColorTabCtrl 通过用新的颜色绘制文本来实现这个函数:

   以下是引用片段:
  // in CColorTabCtrl::DrawItem
  dc.FillSolidRect(rc, m_clrBackground);
  dc.SetBkColor(m_clrBackground);
  dc.SetTextColor(m_clrForeground);
  dc.DrawText(……);

这些都非常简单,所以要了解具体实现请查看源代码。由于您可能不想只更改选项卡颜色而不更改页面颜色,所以我也实现了一个 CcolorPropertyPage,它可以让您将属性页的背景颜色改成匹配的颜色,如图 6 所示。对于属性表,更改背景颜色最简单的方式就是处理 WM_ERASEBKGND:

以下是引用片段:
  BOOL CColorPropertyPage::OnEraseBkgnd(CDC* pDC)
  {
  CRect rc;
  GetClientRect(&rc);
  pDC->FillSolidRect(rc, m_clrBackground);
  return TRUE;
  }

如果您自己试运行这段代码,您会发现有各种令人苦恼的问题。首先,如果您更改页面颜色,所有控件的背景色都会是错误的,所以还必须修正。对此,您必须处理 WM_CTLCOLOR 和 WM_ERASEBKGND.有关详细信息,可以参阅 1997 年 5 月一期中我的 MSJ 专栏。

另一个问题是选项卡控件仍然使用系统 3D 颜色来绘制选项卡的边缘和圆角。唉!要修正这个问题,只能自己处理 WM_PAINT 并负责所有的绘图操作。包括画出选项卡在被选定时与其他选项卡的偏移,以便它以前景色显示。此时,您就要开始对选项卡控件进行一番彻底改造了。每个使用 Windows 的编程人员都知道,更改控件颜色无一例外都是很痛苦的事情,一旦您走上了这条路,要做的事情就似乎没有尽头了。相信很快标准颜色就会比它们原先的颜色漂亮许多,否则您会产生疑问,为什么不转为使用 .NET Framework,它要更改颜色只需简单地写成:

   以下是引用片段:
  ctl.BackColor = Color.Aquamarine;

上一页  3 4 5 6 7 8 

Tags:Visual 删除 托管

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接