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
界面。
继承层次结构
要求
标头: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();
备注
仅供内部使用。