微软MSDN地址:http://technet.microsoft.com/zh-cn/library/bb984192(v=vs.110).aspx
源代码
struct AFX_GLOBAL_DATA
{
friend class CMemDC;
BOOL m_bUseSystemFont; // Use system font for menu/toolbar/ribbons
// solid brushes with convenient gray colors and system colors
HBRUSH hbrBtnHilite, hbrBtnShadow;
HBRUSH hbrWindow;
// color values of system colors used for CToolBar
COLORREF clrBtnFace, clrBtnShadow, clrBtnHilite;
COLORREF clrBtnText, clrWindowFrame;
COLORREF clrBtnDkShadow, clrBtnLight;
COLORREF clrGrayedText;
COLORREF clrHilite;
COLORREF clrTextHilite;
COLORREF clrHotLinkNormalText;
COLORREF clrHotLinkHoveredText;
COLORREF clrHotLinkVisitedText;
COLORREF clrBarWindow;
COLORREF clrBarFace;
COLORREF clrBarShadow, clrBarHilite;
COLORREF clrBarDkShadow, clrBarLight;
COLORREF clrBarText;
COLORREF clrWindow;
COLORREF clrWindowText;
COLORREF clrCaptionText;
COLORREF clrMenuText;
COLORREF clrActiveCaption;
COLORREF clrInactiveCaption;
COLORREF clrInactiveCaptionText;
COLORREF clrActiveBorder;
COLORREF clrInactiveBorder;
CBrush brBtnFace;
CBrush brHilite;
CBrush brLight;
CBrush brBlack;
CBrush brActiveCaption;
CBrush brInactiveCaption;
CBrush brWindow;
CBrush brBarFace;
CPen penHilite;
CPen penBarFace;
CPen penBarShadow;
// Library cursors:
HCURSOR m_hcurStretch;
HCURSOR m_hcurStretchVert;
HCURSOR m_hcurHand;
HCURSOR m_hcurSizeAll;
HCURSOR m_hcurMoveTab;
HCURSOR m_hcurNoMoveTab;
HCURSOR GetHandCursor();
HICON m_hiconTool;
HICON m_hiconLink;
HICON m_hiconColors;
// Shell icon sizes:
CSize m_sizeSmallIcon;
// Toolbar and menu fonts:
CFont fontRegular;
CFont fontTooltip;
CFont fontBold;
CFont fontDefaultGUIBold;
CFont fontUnderline;
CFont fontDefaultGUIUnderline;
CFont fontVert;
CFont fontVertCaption;
CFont fontSmall;
CFont fontMarlett; // Standard Windows menu symbols
CRect m_rectVirtual;
BOOL bGDIPlusSupport;
BOOL bIsWindowsVista;
BOOL bDisableAero;
BOOL bIsRemoteSession;
BOOL bIsOSAlphaBlendingSupport;
BOOL m_bIsBlackHighContrast;
BOOL m_bIsWhiteHighContrast;
BOOL m_bUseBuiltIn32BitIcons;
BOOL m_bMenuAnimation;
BOOL m_bMenuFadeEffect;
BOOL m_bIsRTL;
BOOL m_bEnableAccessibility;
int m_nBitsPerPixel;
int m_nDragFrameThicknessFloat;
int m_nDragFrameThicknessDock;
int m_nAutoHideToolBarSpacing;
int m_nAutoHideToolBarMargin;
int m_nCoveredMainWndClientAreaPercent;
int m_nMaxToolTipWidth;
int m_nShellAutohideBars;
// Implementation
AFX_GLOBAL_DATA();
~AFX_GLOBAL_DATA();
void UpdateSysColors();
void UpdateFonts();
void OnSettingChange();
BOOL SetMenuFont(LPLOGFONT lpLogFont, BOOL bHorz);
int GetTextHeight(BOOL bHorz = TRUE)
{
return bHorz ? m_nTextHeightHorz : m_nTextHeightVert;
}
int GetTextWidth(BOOL bHorz = TRUE)
{
return bHorz ? m_nTextWidthHorz : m_nTextWidthVert;
}
double GetRibbonImageScale()
{
return m_bIsRibbonImageScale ? m_dblRibbonImageScale : 1.;
}
void EnableRibbonImageScale(BOOL bEnable = TRUE)
{
m_bIsRibbonImageScale = bEnable;
}
BOOL IsRibbonImageScaleEnabled()
{
return m_bIsRibbonImageScale;
}
BOOL IsWindowsThemingDrawParentBackground() const
{
return m_pfDrawThemeBackground != NULL;
}
BOOL DrawParentBackground(CWnd* pWnd, CDC* pDC, LPRECT lpRect = NULL);
void CleanUp();
COLORREF GetColor(int nColor);
BOOL SetLayeredAttrib(HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
BOOL IsWindowsLayerSupportAvailable() const
{
return m_pfSetLayeredWindowAttributes != NULL;
}
BOOL Is32BitIcons() const
{
return m_bUseBuiltIn32BitIcons && m_nBitsPerPixel >= 16 && !m_bIsBlackHighContrast && !m_bIsWhiteHighContrast;
}
BOOL IsHighContrastMode() const
{
return m_bIsWhiteHighContrast || m_bIsBlackHighContrast;
}
BOOL IsAccessibilitySupport() const
{
return m_bEnableAccessibility;
}
void EnableAccessibilitySupport(BOOL bEnable = TRUE);
CString RegisterWindowClass(LPCTSTR lpszClassNamePrefix);
BOOL ExcludeTag(CString& strBuffer, LPCTSTR lpszTag, CString& strTag, BOOL bIsCharsList = FALSE);
BOOL DwmExtendFrameIntoClientArea(HWND hWnd, AFX_MARGINS* pMargins);
LRESULT DwmDefWindowProc(HWND hWnd, UINT message, WPARAM wp, LPARAM lp);
BOOL DwmIsCompositionEnabled();
BOOL DrawTextOnGlass(HTHEME hTheme, CDC* pDC, int iPartId, int iStateId, CString strText,
CRect rect, DWORD dwFlags, int nGlowSize = 0, COLORREF clrText = (COLORREF)-1);
BOOL Resume();
BOOL GetNonClientMetrics (NONCLIENTMETRICS& info);
protected:
void UpdateTextMetrics();
HBITMAP CreateDitherBitmap(HDC hDC);
int m_nTextHeightHorz;
int m_nTextHeightVert;
int m_nTextWidthHorz;
int m_nTextWidthVert;
double m_dblRibbonImageScale;
BOOL m_bIsRibbonImageScale;
HINSTANCE m_hinstUXThemeDLL;
HINSTANCE m_hinstUser32;
HINSTANCE m_hinstDwmapiDLL;
SETLAYEATTRIB m_pfSetLayeredWindowAttributes;
DRAWTHEMEPARENTBACKGROUND m_pfDrawThemeBackground;
DRAWTHEMETEXTEX m_pfDrawThemeTextEx;
BEGINBUFFEREDPAINT m_pfBeginBufferedPaint;
ENDBUFFEREDPAINT m_pfEndBufferedPaint;
DWMEXTENDFRAMEINTOCLIENTAREA m_pfDwmExtendFrameIntoClientArea;
DWMDEFWINDOWPROC m_pfDwmDefWindowProc;
DWMISCOMPOSITIONENABLED m_pfDwmIsCompositionEnabled;
};
AFX_IMPORT_DATA extern AFX_GLOBAL_DATA afxGlobalData;
AFX_GLOBAL_DATA 结构包含用于管理框架或自定义应用程序的外观和行为的字段和方法。
struct AFX_GLOBAL_DATA
成员
公共构造函数 名称 说明
AFX_GLOBAL_DATA::AFX_GLOBAL_DATA构造 AFX_GLOBAL_DATA 结构。
AFX_GLOBAL_DATA::~AFX_GLOBAL_DATA析构函数。
公共方法 名称 说明
AFX_GLOBAL_DATA::CleanUp释放由框架分配,如画笔、字体和 DLL 的资源。
AFX_GLOBAL_DATA::D2D1MakeRotateMatrix创建以指定点为中心旋转指定角度的旋转转换。
AFX_GLOBAL_DATA::DrawParentBackground在指定区域内绘制一个控件的父级的背景。
AFX_GLOBAL_DATA::DrawTextOnGlass绘制在指定的主题的视觉样式的指定的文本。
AFX_GLOBAL_DATA::DwmDefWindowProc提供了一种简单的方法调用 windows DwmDefWindowProc 方法。
AFX_GLOBAL_DATA::DwmExtendFrameIntoClientArea提供了一种简单的方法调用 windows DwmExtendFrameIntoClientArea 方法。
AFX_GLOBAL_DATA::DwmIsCompositionEnabled提供了一种简单的方法调用 windows DwmIsCompositionEnabled 方法。
AFX_GLOBAL_DATA::ExcludeTag移除指定的 XML 标记从指定的缓冲区对。
AFX_GLOBAL_DATA::GetColor检索指定的用户界面元素的当前颜色。
AFX_GLOBAL_DATA::GetDirect2dFactory返回指向存储在全局数据中的 ID2D1Factory 接口。 如果未初始化该接口,则会创建它,并且它将具有默认参数。
AFX_GLOBAL_DATA::GetHandCursor检索类似手形,并且标识符是 IDC_HAND的预定义的光标。
AFX_GLOBAL_DATA::GetITaskbarList在全局数据创建并存储指向 ITaskBarList 接口。
AFX_GLOBAL_DATA::GetITaskbarList3在全局数据创建并存储指向 ITaskBarList3 接口。
AFX_GLOBAL_DATA::GetNonClientMetrics检索该度量与 nonminimized 窗口的非工作区。
AFX_GLOBAL_DATA::GetShellAutohideBars确定 Shell 自动隐藏栏的位置。
AFX_GLOBAL_DATA::GetTextHeight检索高度在当前字体的文本字符。
AFX_GLOBAL_DATA::GetWICFactory返回指向存储在全局数据中的 IWICImagingFactory 接口。 如果未初始化该接口,则会创建它,并且它将具有默认参数。
AFX_GLOBAL_DATA::GetWriteFactory返回指向存储在全局数据中的 IDWriteFactory 接口。 如果未初始化该接口,则会创建它,并且它将具有默认参数。
AFX_GLOBAL_DATA::IsD2DInitialized初始化 D2D、 DirectWrite和 WIC 工厂。 在初始化主窗口之前,调用此方法。
AFX_GLOBAL_DATA::Is32BitIcons指示预定义的 32 位图标是否支持。
AFX_GLOBAL_DATA::IsD2DInitialized确定 D2D 是否已初始化。
AFX_GLOBAL_DATA::IsHighContrastMode指示图像是否在高对比度当前显示。
AFX_GLOBAL_DATA::OnSettingChange检测桌面的菜单动画和任务栏窗口功能的当前状态。
AFX_GLOBAL_DATA::RegisterWindowClass注册指定的 MFC windows 类。
AFX_GLOBAL_DATA::ReleaseTaskBarRefs通过 GetITaskbarList 和 GetITaskbarList3 方法获取的版本接口。
AFX_GLOBAL_DATA::Resume重新初始化内部函数指针支持 windows 主题和视觉样式的访问方法。
AFX_GLOBAL_DATA::SetLayeredAttrib提供了一种简单的方法调用 windows SetLayeredWindowAttributes 方法。
AFX_GLOBAL_DATA::SetMenuFont创建指定的逻辑字体。
AFX_GLOBAL_DATA::ShellCreateItemFromParsingName创建并初始化从分析名称的一 Shell 项的对象。
AFX_GLOBAL_DATA::UpdateFontsReintializes 框架使用的逻辑字体。
AFX_GLOBAL_DATA::UpdateSysColors初始化框架使用的颜色、颜色深度、画笔、钢笔和图像。
受保护的方法 名称 说明
AFX_GLOBAL_DATA::EnableAccessibilitySupport启用或禁用 Microsoft Active Accessibility 支持。 有效的可访问性用于显示用户界面元素信息提供可靠方法。
AFX_GLOBAL_DATA::IsAccessibilitySupport表示 Microsoft Active Accessibility 是否支持启用。
AFX_GLOBAL_DATA::IsWindowsLayerSupportAvailable指示操作系统是否支持分层窗口。
数据成员 名称 说明
AFX_GLOBAL_DATA::bIsOSAlphaBlendingSupport指示当前操作系统是否支持 alpha 混合。
AFX_GLOBAL_DATA::bIsWindows7指示应用程序是否是在 Windows 7 操作系统下或更高版本
AFX_GLOBAL_DATA::clrActiveCaptionGradient指定活动图例中的渐变颜色。 通常用于停靠窗格。
AFX_GLOBAL_DATA::clrInactiveCaptionGradient指定非活动活动图例中的渐变颜色。 通常用于停靠窗格。
AFX_GLOBAL_DATA::m_bUseBuiltIn32BitIcons指示框架是否使用预定义的 32 位色图标或图标更低分辨率。
AFX_GLOBAL_DATA::m_bUseSystemFont指示系统字体是否为菜单、工具栏和功能区使用。
AFX_GLOBAL_DATA::m_hcurHand存储手光标的句柄。
AFX_GLOBAL_DATA::m_hcurStretch存储级别的拉伸光标的句柄。
AFX_GLOBAL_DATA::m_hcurStretchVert存储垂直拉伸光标的句柄。
AFX_GLOBAL_DATA::m_hiconTool存储工具图标的句柄。
AFX_GLOBAL_DATA::m_nAutoHideToolBarMargin指定从最左侧的窗口工具栏的偏移量到停靠条的左侧。
AFX_GLOBAL_DATA::m_nAutoHideToolBarSpacing指定窗口工具栏之间的空白。
AFX_GLOBAL_DATA::m_nDragFrameThicknessDock指定用于传达该停靠的状态拖动帧的粗细。
AFX_GLOBAL_DATA::m_nDragFrameThicknessFloat指定用于传达该浮动状态拖动帧的粗细。
全局属性说明:
BOOL m_bUseSystemFont; // 菜单 工具条 ribbons是否使用系统字体
// 灰色和系统颜色的纯色画刷
HBRUSH hbrBtnHilite, hbrBtnShadow;
HBRUSH hbrWindow;
// 工具条使用系统的颜色的颜色值
缩写说明 -clr 颜色RGB值 -Bar工具吧 -Btn 按钮 -Face外观 -Shadow阴影 -Hilite高亮 -Text文本 -Window窗口 -Frame框架 -Hot活动状态
-Normal正常态 -Visited访问状态 -Hovered -Active当前活动 -Inactive当前无效的
参数变量说明 -COLORREF RGB颜色值 -CBrush画刷 -CPen 画笔 -HCURSOR 光标 -HICON 图标 -CFont 字体
COLORREF clrBtnFace, clrBtnShadow, clrBtnHilite;
COLORREF clrBtnText, clrWindowFrame;
COLORREF clrBtnDkShadow, clrBtnLight;
COLORREF clrGrayedText;
COLORREF clrHilite;
COLORREF clrTextHilite;
COLORREF clrHotLinkNormalText;
COLORREF clrHotLinkHoveredText;
COLORREF clrHotLinkVisitedText;
COLORREF clrBarWindow;
COLORREF clrBarFace;
COLORREF clrBarShadow, clrBarHilite;
COLORREF clrBarDkShadow, clrBarLight;
COLORREF clrBarText;
COLORREF clrWindow;
COLORREF clrWindowText;
COLORREF clrCaptionText;
COLORREF clrMenuText;
COLORREF clrActiveCaption;
COLORREF clrInactiveCaption;
COLORREF clrInactiveCaptionText;
COLORREF clrActiveBorder;
COLORREF clrInactiveBorder;
CBrush brBtnFace;
CBrush brHilite;
CBrush brLight;
CBrush brBlack;
CBrush brActiveCaption;
CBrush brInactiveCaption;
CBrush brWindow;
CBrush brBarFace;
CPen penHilite;
CPen penBarFace;
CPen penBarShadow;
// Library cursors:
HCURSOR m_hcurStretch;
HCURSOR m_hcurStretchVert;
HCURSOR m_hcurHand;
HCURSOR m_hcurSizeAll;
HCURSOR m_hcurMoveTab;
HCURSOR m_hcurNoMoveTab;
HCURSOR GetHandCursor();
HICON m_hiconTool;
HICON m_hiconLink;
HICON m_hiconColors;
// Shell icon sizes:
CSize m_sizeSmallIcon;
// Toolbar and menu fonts:
CFont fontRegular;
CFont fontTooltip;
CFont fontBold;
CFont fontDefaultGUIBold;
CFont fontUnderline;
CFont fontDefaultGUIUnderline;
CFont fontVert;
CFont fontVertCaption;
CFont fontSmall;
CFont fontMarlett; // Standard Windows menu symbols
CRect m_rectVirtual;
BOOL bGDIPlusSupport;
BOOL bIsWindowsVista;
BOOL bDisableAero;
BOOL bIsRemoteSession;
BOOL bIsOSAlphaBlendingSupport;
BOOL m_bIsBlackHighContrast;
BOOL m_bIsWhiteHighContrast;
BOOL m_bUseBuiltIn32BitIcons;
BOOL m_bMenuAnimation;
BOOL m_bMenuFadeEffect;
BOOL m_bIsRTL;
BOOL m_bEnableAccessibility;
int m_nBitsPerPixel;
int m_nDragFrameThicknessFloat;
int m_nDragFrameThicknessDock;
int m_nAutoHideToolBarSpacing;
int m_nAutoHideToolBarMargin;
int m_nCoveredMainWndClientAreaPercent;
int m_nMaxToolTipWidth;
int m_nShellAutohideBars;