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

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

 2008-11-12 19:26:24 来源:WEB开发网   
核心提示: 在 Microsoft Systems Journal1998 年 3 月发行的那一期中,我介绍了如何实现一个选项卡控件类 — CtabCtrlWithDisable,Visual C++中删除托管对象、包装库及其他(7),它支持禁用选项卡,作为禁用选项卡的一部分,而不是虚函数

在 Microsoft Systems Journal1998 年 3 月发行的那一期中,我介绍了如何实现一个选项卡控件类 — CtabCtrlWithDisable,它支持禁用选项卡。作为禁用选项卡的一部分,当选项卡禁用时,CTabCtrlWithDisable 将选项卡的文本颜色变为浅灰色。本月,我从 CTabCtrlWithDisable 借用了一些代码,实现了一个新的类 — CcolorTablCtrl,它可以使您更改选项卡的颜色(请参见图 5)。

要使用 CcolorTablCtrl,请在您的属性表中创建一个实例:

   以下是引用片段:
  class CMyPropSheet : public CPropertySheet {
  protected:
  CColorTabCtrl m_tabCtrl;
  };

您必须在属性表的 OnInitDialog 处理程序中子类化选项卡控件(以便 MFC 可以使用它),然后将前景色和背景色设置成您喜欢的任何颜色:

   以下是引用片段:
  // in CMyPropSheet::OnInitDialog()
  HWND hWndTab = (HWND)SendMessage(PSM_GETTABCONTROL);
  m_tabCtrl.SubclassDlgItem(::GetDlgCtrlID(hWndTab), this);
  m_tabCtrl.SetColor(WHITE, RED);

这里的 WHITE 和 RED 是标准的 COLORREF 值,即 RGB(255, 255, 255) 和 RGB(255,0,0)。一旦您实例化并初始化 CcolorTabCtrl,颜色选项卡控件就会完成剩下的工作(请参见图 6)。

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

图 6 颜色选项卡控件

CColorTabCtrl 重写了 SubclassDlgItem,它调用 ModifyStyle 来将风格更改为TCS_OWNERDRAWFIXED.进行重写的较好位置是在 PreSubclassWindow 中,因为不管控件是子类化还是通过 CreateWindow 创建都会调用这个函数(但由于杂志篇幅有限,我必须对代码进行压缩,因此我采用了这样的捷径)。注意,SubclassDlgItem 是一个简单的重写,而不是虚函数。为了设置颜色,SetColor 将颜色保存在两个成员变量 m_clrBackground 和 m_clrForeground 中。

上一页  2 3 4 5 6 7 8  下一页

Tags:Visual 删除 托管

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