CMFCBaseVisualManager 类

派生的虚拟管理器和 Windows 主题 API 之间的层。

CMFCBaseVisualManager 加载 UxTheme.dll(如果可用)并管理对 Windows 主题 API 方法的访问。

此类仅供内部使用。

语法

class CMFCBaseVisualManager: public CObject

成员

公共构造函数

名称 描述
CMFCBaseVisualManager::CMFCBaseVisualManager 构造并初始化一个 CMFCBaseVisualManager 对象。
CMFCBaseVisualManager::~CMFCBaseVisualManager 析构函数。

公共方法

名称 描述
CMFCBaseVisualManager::DrawCheckBox 使用当前的 Windows 主题绘制复选框控件。
CMFCBaseVisualManager::DrawComboBorder 使用当前的 Windows 主题绘制组合框边框。
CMFCBaseVisualManager::DrawComboDropButton 使用当前的 Windows 主题绘制组合框下拉按钮。
CMFCBaseVisualManager::DrawPushButton 使用当前的 Windows 主题绘制按钮。
CMFCBaseVisualManager::DrawRadioButton 使用当前的 Windows 主题绘制单选按钮控件。
CMFCBaseVisualManager::DrawStatusBarProgress 使用当前的 Windows 主题在状态栏控件(CMFCStatusBar 类)上绘制进度栏。
CMFCBaseVisualManager::FillReBarPane 使用当前的 Windows 主题填充 rebar 控件的背景。
CMFCBaseVisualManager::GetStandardWindowsTheme 获取当前的 Windows 主题。

受保护方法

名称 描述
CMFCBaseVisualManager::CleanUpThemes 为在 UpdateSystemColors 中获得的所有句柄调用 CloseThemeData
CMFCBaseVisualManager::UpdateSystemColors 调用 OpenThemeData 以获取用于绘制各种控件(窗口、工具栏、按钮等)的句柄。

注解

不必直接实例化此类的对象。

由于它是所有虚拟管理器的基类,因此只需调用 CMFCVisualManager::GetInstance,获取指向当前虚拟管理器的指针,并使用该指针访问 CMFCBaseVisualManager 的方法即可。 但是,如果必须使用当前的 Windows 主题来显示控件,最好是使用 CMFCVisualManagerWindows 界面。

继承层次结构

CObject

CMFCBaseVisualManager

要求

标头:afxvisualmanager.h

CMFCBaseVisualManager::CleanUpThemes

为在 UpdateSystemColors 中获得的所有句柄调用 CloseThemeData

void CleanUpThemes();

备注

仅供内部使用。

CMFCBaseVisualManager::CMFCBaseVisualManager

构造并初始化一个 CMFCBaseVisualManager 对象。

CMFCBaseVisualManager();

CMFCBaseVisualManager::DrawCheckBox

使用当前的 Windows 主题绘制复选框控件。

virtual BOOL DrawCheckBox(
    CDC* pDC,
    CRect rect,
    BOOL bHighlighted,
    int nState,
    BOOL bEnabled,
    BOOL bPressed);

);

参数

pDC
[in] 指向设备上下文的指针

rect
[in] 复选框的边框。

bHighlighted
[in] 指定是否突出显示复选框。

nState
[in] 0 表示未选中,1 表示已选中,

2 表示已选中但灰显。

bEnabled
[in] 指定是否启用复选框。

bPressed
[in] 指定是否按下复选框。

返回值

如果启用了主题 API,则为 TRUE;否则为 FALSE。

注解

nState 的值对应于以下复选框样式

nState 复选框样式
0 CBS_UNCHECKEDNORMAL
1 CBS_CHECKEDNORMAL
2 CBS_MIXEDNORMAL

CMFCBaseVisualManager::DrawComboBorder

使用当前的 Windows 主题绘制组合框边框。

virtual BOOL DrawComboBorder(
    CDC* pDC,
    CRect rect,
    BOOL bDisabled,
    BOOL bIsDropped,
    BOOL bIsHighlighted);

参数

pDC
[in] 指向设备上下文的指针。

rect
[in] 组合框边框的边框。

bDisabled
[in] 指定是否禁用组合框边框。

bIsDropped
[in] 指定是否下拉组合框边框。

bIsHighlighted
[in] 指定是否突出显示组合框边框。

返回值

如果启用了主题 API,则为 TRUE;否则为 FALSE。

CMFCBaseVisualManager::DrawComboDropButton

使用当前的 Windows 主题绘制组合框下拉按钮。

virtual BOOL DrawComboDropButton(
    CDC* pDC,
    CRect rect,
    BOOL bDisabled,
    BOOL bIsDropped,
    BOOL bIsHighlighted);

参数

pDC
[in] 指向设备上下文的指针。

rect
[in] 组合框下拉按钮的边框。

bDisabled
[in] 指定是否禁用组合框下拉按钮。

bIsDropped
[in] 指定是否下拉组合框下拉按钮。

bIsHighlighted
[in] 指定是否突出显示组合框下拉按钮。

返回值

如果启用了主题 API,则为 TRUE;否则为 FALSE。

CMFCBaseVisualManager::DrawPushButton

使用当前的 Windows 主题绘制按钮。

virtual BOOL DrawPushButton(
    CDC* pDC,
    CRect rect,
    CMFCButton* pButton,
    UINT uiState);

参数

pDC
[in] 指向设备上下文的指针。

rect
[in] 推送按钮边框。

pButton
[in] 指向要绘制的 CMFCButton Class 对象的指针。

uiState
[in] 已忽略。 状态取自 pButton

返回值

如果启用了主题 API,则为 TRUE;否则为 FALSE。

CMFCBaseVisualManager::DrawRadioButton

使用当前的 Windows 主题绘制单选按钮控件。

virtual BOOL DrawRadioButton(
    CDC* pDC,
    CRect rect,
    BOOL bHighlighted,
    BOOL bChecked,
    BOOL bEnabled,
    BOOL bPressed);

参数

pDC
[in] 指向设备上下文的指针。

rect
[in] 单选按钮的边框。

bHighlighted
[in] 指定是否突出显示单选按钮。

bChecked
[in] 指定是否选中单选按钮。

bEnabled
[in] 指定是否启用单选按钮。

bPressed
[in] 指定是否按下单选按钮。

返回值

如果启用了主题 API,则为 TRUE;否则为 FALSE。

CMFCBaseVisualManager::DrawStatusBarProgress

使用当前的 Windows 主题在状态栏控件(CMFCStatusBar 类)上绘制进度栏。

virtual BOOL DrawStatusBarProgress(
    CDC* pDC,
    CMFCStatusBar* pStatusBar,
    CRect rectProgress,
    int nProgressTotal,
    int nProgressCurr,
    COLORREF clrBar,
    COLORREF clrProgressBarDest,
    COLORREF clrProgressText,
    BOOL bProgressText);

参数

pDC
[in] 指向设备上下文的指针。

pStatusBar
[in] 指向状态栏的指针。 忽略此值。

rectProgress
[in] pDC 坐标中进度栏的边框

nProgressTotal
[in] 总进度值。

nProgressCurr
[in] 当前进度值。

clrBar
[in] 起始颜色。 CMFCBaseVisualManager 会略此参数。 派生类可以将该参数用于颜色渐变。

clrProgressBarDest
[in] 结束颜色。 CMFCBaseVisualManager 会略此参数。 派生类可以将该参数用于颜色渐变。

clrProgressText
[in] 进度文本颜色。 CMFCBaseVisualManager 会略此参数。 文本颜色由 afxGlobalData.clrBtnText 定义。

bProgressText
[in] 指定是否显示进度文本。

返回值

如果启用了主题 API,则为 TRUE;否则为 FALSE。

CMFCBaseVisualManager::FillReBarPane

使用当前的 Windows 主题填充 rebar 控件的背景。

virtual void FillReBarPane(
    CDC* pDC,
    CBasePane* pBar,
    CRect rectClient);

参数

pDC
[in] 指向设备上下文的指针。

pBar
[in] 指向应绘制其背景的窗格的指针。

rectClient
[in] 要填充的区域的边框。

返回值

如果启用了主题 API,则为 TRUE;否则为 FALSE。

CMFCBaseVisualManager::GetStandardWindowsTheme

获取当前的 Windows 主题。

virtual WinXpTheme GetStandardWindowsTheme();

返回值

当前选择的 Windows 主题颜色。 可以是以下枚举值之一:

  • WinXpTheme_None - 没有启用主题。

  • WinXpTheme_NonStandard - 选择了非标准主题(意味着选择了一个主题,但没有从下面的列表中选择)。

  • WinXpTheme_Blue - 蓝色主题 (Luna)。

  • WinXpTheme_Olive - 橄榄绿主题。

  • WinXpTheme_Silver - 银色主题。

CMFCBaseVisualManager::UpdateSystemColors

调用 OpenThemeData 以获取用于绘制各种控件(窗口、工具栏、按钮等)的句柄。

void UpdateSystemColors();

备注

仅供内部使用。

另请参阅

层次结构图