CFrameWndEx
类
实现 Windows 单文档界面 (SDI) 重叠式或弹出框架窗口功能,并提供管理窗口的成员。 它扩展 CFrameWnd
类。
语法
class CFrameWndEx : public CFrameWnd
成员
公共方法
示例
以下示例演示如何从 CFrameWndEx
类继承类。 该示例演示了子类中的方法签名,以及如何替代 OnShowPopupMenu
方法。 此代码片段属于 Word Pad 示例。
class CMainFrame : public CFrameWndEx
{
protected: // create from serialization only
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)
// Attributes
public:
HICON m_hIconDoc;
HICON m_hIconText;
HICON m_hIconWrite;
HICON GetIcon(int nDocType);
// Operations
public:
void UpdateMRUFilesList()
{
m_wndTaskPane.UpdateMRUFilesList();
}
void OnChangeLook();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMainFrame)
public:
virtual void ActivateFrame(int nCmdShow = -1);
virtual BOOL LoadFrame(UINT nIDResource,
DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
CWnd *pParentWnd = NULL,
CCreateContext *pContext = NULL);
protected:
virtual BOOL PreCreateWindow(CREATESTRUCT &cs);
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
//}}AFX_VIRTUAL
virtual BOOL OnShowPopupMenu(CMFCPopupMenu *pMenuPopup);
virtual BOOL OnTearOffMenu(CMFCPopupMenu *pMenuPopup, CPane *pBar);
protected:
void AdjustObjectSubmenu(CMFCPopupMenu *pMenuPopup);
void AdjustColorsMenu(CMFCPopupMenu *pMenuPopup, UINT uiId);
// Implementation
public:
virtual ~CMainFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext &dc) const;
#endif
public:
CMFCMenuBar m_wndMenuBar;
CMFCToolBar m_wndToolBar;
CMFCStatusBar m_wndStatusBar;
CFormatBar m_wndFormatBar;
CRulerBar m_wndRulerBar;
CTaskPane m_wndTaskPane;
protected: // control bar embedded members
BOOL CreateMenuBar();
BOOL CreateToolBar();
BOOL CreateFormatBar();
BOOL CreateStatusBar();
BOOL CreateRulerBar();
BOOL CreateTaskPane();
// Generated message map functions
protected:
//{{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSysColorChange();
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnMove(int x, int y);
afx_msg void OnHelpFinder();
afx_msg void OnDropFiles(HDROP hDropInfo);
afx_msg void OnFontChange();
afx_msg BOOL OnQueryNewPalette();
afx_msg void OnPaletteChanged(CWnd *pFocusWnd);
afx_msg void OnDevModeChange(LPTSTR lpDeviceName);
afx_msg void OnViewCustomize();
afx_msg void OnViewFullScreen();
//}}AFX_MSG
afx_msg LRESULT OnBarState(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnOpenMsg(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnHelpCustomizeToolbars(WPARAM wp, LPARAM lp);
afx_msg LRESULT OnStartCustomize(WPARAM wp, LPARAM lp);
afx_msg LRESULT OnToolbarCreateNew(WPARAM, LPARAM);
afx_msg LRESULT OnGetDocumentColors(WPARAM, LPARAM);
afx_msg void OnDummy();
afx_msg void OnAskQuestion();
DECLARE_MESSAGE_MAP()
};
// CMainFrame is application-defined object of type CFrameWndEx
BOOL CMainFrame::OnShowPopupMenu(CMFCPopupMenu *pMenuPopup)
{
BOOL bRes = CFrameWndEx::OnShowPopupMenu(pMenuPopup);
if (pMenuPopup != NULL && !pMenuPopup->IsCustomizePane())
{
AdjustObjectSubmenu(pMenuPopup);
AdjustColorsMenu(pMenuPopup, ID_CHAR_COLOR);
}
return bRes;
}
继承层次结构
要求
标头:afxframewndex.h
CFrameWndEx::ActiveItemRecalcLayout
调整 OLE 客户端项和框架的工作区的布局。
void ActiveItemRecalcLayout();
备注
CFrameWndEx::AddPane
向停靠管理器注册控件条。
BOOL AddPane(
CBasePane* pControlBar,
BOOL bTail=TRUE);
参数
pControlBar
[in] 要注册的控件条窗格。
bTail
[in] 如果要将控件条窗格添加到列表末尾,则为 TRUE
;否则为 FALSE
。
返回值
如果已成功注册控件条,则为 TRUE
;否则为 FALSE
。
CFrameWndEx::AdjustDockingLayout
重新计算停靠到框架窗口的所有窗格的布局。
virtual void AdjustDockingLayout(HDWP hdwp=NULL);
参数
hdwp
包含多个窗口位置的结构的句柄。 。
注解
hdwp 结构由 BeginDeferWindowPos
方法初始化。
CFrameWndEx::DelayUpdateFrameMenu
设置框架菜单,然后在命令处理空闲时更新该菜单。
virtual void DelayUpdateFrameMenu(HMENU hMenuAlt);
参数
hMenuAlt
[in] 替代菜单的句柄。
备注
CFrameWndEx::DockPane
将指定的窗格停靠到框架窗口。
void DockPane(
CBasePane* pBar,
UINT nDockBarID=0,
LPCRECT lpRect=NULL);
参数
pBar
[in] 指向要停靠的控件条的指针。
nDockBarID
[in] 要停靠到的框架窗口侧的 ID。
lpRect
[in] 指向常量 Rect
结构的指针,该结构指定窗口的屏幕位置和大小。
备注
nDockBarID
参数可以具有下列值之一:
AFX_IDW_DOCKBAR_TOP
AFX_IDW_DOCKBAR_BOTTOM
AFX_IDW_DOCKBAR_LEFT
AFX_IDW_DOCKBAR_RIGHT
CFrameWndEx::DockPaneLeftOf
将指定窗格停靠到另一个窗格的左侧。
BOOL DockPaneLeftOf(
CPane* pBar,
CPane* pLeftOf);
参数
pBar
[in] 指向要停靠的窗格对象的指针。
pLeftOf
[in] 指向窗格的指针,该窗格左侧将停靠 pBar
指定的窗格。
返回值
如果 pBar
已成功停靠,则为 TRUE
。 否则为 FALSE
。
注解
该方法采用 pBar
参数指定的工具栏,并将其停靠在 pLeftOf
参数指定的工具栏左侧。
CFrameWndEx::EnableAutoHidePanes
当窗格停靠到主框架窗口的指定侧时,为窗格启用自动隐藏模式。
BOOL EnableAutoHidePanes(DWORD dwDockStyle);
参数
dwDockStyle
[in] 指定要停靠窗格的主框架窗口侧。
返回值
如果功能条窗格已成功停靠到 dwDockStyle
指定的框架窗口侧,则为 TRUE
;否则为 FALSE
。
备注
dwDockStyle
可具有以下值之一:
CBRS_ALIGN_TOP
:允许将控件条停靠到框架窗口的工作区顶部。CBRS_ALIGN_BOTTOM
:允许将控件条停靠到框架窗口的工作区底部。CBRS_ALIGN_LEFT
:允许将控件条停靠到框架窗口的工作区左侧。CBRS_ALIGN_RIGHT
:允许将控件条停靠到框架窗口的工作区右侧。
CFrameWndEx::EnableDocking
启用框架窗口的窗格停靠。
BOOL EnableDocking(DWORD dwDockStyle);
参数
dwDockStyle
[in] 指定窗格栏将停靠的主框架窗口侧。
返回值
如果功能条窗格可以成功停靠在指定侧,则为 TRUE
。 否则为 FALSE
。
备注
dwDockStyle
参数可以具有下列值之一:
CBRS_ALIGN_TOP
CBRS_ALIGN_BOTTOM
CBRS_ALIGN_LEFT
CBRS_ALIGN_RIGHT
CFrameWndEx::EnableFullScreenMainMenu
在全屏模式下显示或隐藏主菜单。
void EnableFullScreenMainMenu(BOOL bEnableMenu);
参数
bEnableMenu
[in] 如果为 TRUE
,则以全屏模式显示主菜单,否则为 FALSE
。
CFrameWndEx::EnableFullScreenMode
为框架窗口启用全屏模式。
void EnableFullScreenMode(UINT uiFullScreenCmd);
参数
uiFullScreenCmd
[in] 启用或禁用全屏模式的命令的 ID。
备注
在全屏模式下,所有停靠的控件条、工具栏和菜单都将隐藏,并且活动视图的大小将调整为占用全屏。
启用全屏模式时,必须指定启用或禁用全屏模式的命令的 ID。 可以从主框架的 OnCreate
函数调用 EnableFullScreenMode
。 当框架窗口切换到全屏模式时,框架将创建一个浮动工具栏,其中包含一个具有指定命令 ID 的按钮。
如果要在屏幕上保留主菜单,请调用 CFrameWndEx::EnableFullScreenMainMenu
。
CFrameWndEx::EnableLoadDockState
启用或禁用停靠状态加载。
void EnableLoadDockState(BOOL bEnable=TRUE);
参数
bEnable
[in] 如果为 TRUE
,则启用停靠状态加载,如果为 FALSE
,则禁用停靠状态加载。
CFrameWndEx::EnablePaneMenu
启用或禁用窗格菜单的自动处理。
void EnablePaneMenu(
BOOL bEnable,
UINT uiCustomizeCmd,
const CString& strCustomizeLabel,
UINT uiViewToolbarsMenuEntryID,
BOOL bContextMenuShowsToolbarsOnly=FALSE,
BOOL bViewMenuShowsToolbarsOnly=FALSE);
参数
bEnable
[in] 如果为 TRUE
,则启用控件条弹出菜单自动处理;如果为 FALSE
,则禁用控件条弹出菜单自动处理。
uiCustomizeCmd
[in]“自定义”菜单项的命令 ID。
strCustomizeLabel
[in] 要为“自定义”菜单项显示的标签
uiViewToolbarsMenuEntryID
[in] 打开控件条中弹出菜单的工具栏菜单项的 ID。
bContextMenuShowsToolbarsOnly
[in] 如果为 TRUE
,则控件条上下文菜单仅显示工具栏列表。 如果为 FALSE
,则菜单将显示工具栏和停靠功能条的列表。
bViewMenuShowsToolbarsOnly
[in] 如果为 TRUE
,则控件条菜单仅显示工具栏列表。 如果为 FALSE
,则菜单将显示工具栏和停靠功能条的列表。
CFrameWndEx::GetActivePopup
返回一个指向当前显示的弹出菜单的指针。
CMFCPopupMenu* GetActivePopup() const;
返回值
指向当前显示的弹出菜单的指针;否则返回 NULL
。
CFrameWndEx::GetDefaultResId
返回框架加载框架窗口时你指定的资源 ID。
UINT GetDefaultResId() const;
返回值
在框架加载框架窗口时用户指定的资源 ID 值。 如果框架窗口没有菜单栏,则为零。
CFrameWndEx::GetDockingManager
检索框架窗口的 CDockingManager
类对象。
CDockingManager* GetDockingManager();
返回值
指向 CDockingManager
类的指针。
注解
框架窗口创建并使用 CDockingManager
类对象来管理子窗口停靠。
CFrameWndEx::GetMenuBar
返回一个指向附加到框架窗口的菜单栏对象的指针。
const CMFCMenuBar* GetMenuBar() const;
返回值
指向附加到框架窗口的菜单栏对象的指针。
CFrameWndEx::GetPane
返回一个指向具有指定 ID 的窗格的指针。
CBasePane* GetPane(UINT nID);
参数
nID
[in] 控件 ID。
返回值
指向具有指定 ID 的窗格的指针。 如果不存在此类窗格,则返回 NULL
。
CFrameWndEx::GetRibbonBar
检索框架的功能区栏控件。
CMFCRibbonBar* GetRibbonBar();
返回值
指向框架的 CMFCRibbonBar
类的指针。
注解
CFrameWndEx::GetTearOffBars
返回处于拖曳状态的窗格对象的列表。
const CObList& GetTearOffBars() const;
返回值
对 CObList
对象的引用,该对象包含指向处于拖曳状态的窗格对象的指针集合。
CFrameWndEx::GetToolbarButtonToolTipText
当应用程序显示工具栏按钮的工具提示时由框架调用。
virtual BOOL GetToolbarButtonToolTipText(
CMFCToolBarButton* pButton,
CString& strTTText);
参数
pButton
[in] 指向工具栏按钮的指针。
strTTText
[in] 要为按钮显示的工具提示文本。
返回值
如果已显示工具提示,则返回 TRUE
。 否则为 FALSE
。
备注
默认情况下,此方法不执行任何操作。 如果想要显示工具栏按钮的工具提示,请重写此方法。
CFrameWndEx::InsertPane
将窗格插入到控件条列表中并注册到停靠管理器。
BOOL InsertPane(
CBasePane* pControlBar,
CBasePane* pTarget,
BOOL bAfter=TRUE);
参数
pControlBar
将插入到控件栏列表中并注册到停靠管理器的指向控件条的指针。
pTarget
在其之前或之后插入窗格的指向控件条的指针。
bAfter
如果想将 pControlBar
插入到 pTarget
后面,则为 TRUE
,否则为 FALSE
。
返回值
如果成功插入并注册了控件条,则为 TRUE
,否则为 FALSE
。
注解
必须使用 CDockingManager
类注册每个控件条,以便加入停靠布局。
CFrameWndEx::IsFullScreen
确定框架窗口是否处于全屏模式。
BOOL IsFullScreen() const;
返回值
如果框架窗口处于全屏模式,则为 TRUE
;否则为 FALSE
。
备注
可以通过调用 CFrameWndEx::EnableFullScreenMode
方法来设置全屏模式。
CFrameWndEx::IsMenuBarAvailable
确定指向菜单栏对象的指针是否有效。
BOOL IsMenuBarAvailable() const;
返回值
如果框架窗口具有菜单栏,则为 TRUE
;否则为 FALSE
。
CFrameWndEx::IsPointNearDockSite
确定点是否位于对齐区域中。
BOOL IsPointNearDockSite(
CPoint point,
DWORD& dwBarAlignment,
BOOL& bOuterEdge) const;
参数
point
[in] 点的位置。
dwBarAlignment
[out] 点对齐的位置。 有关可能的值,请参阅注解部分中的表。
bOuterEdge
[out] 如果点位于框架边框附近,则为 TRUE
;如果点位于工作区中,则为 FALSE
。
返回值
如果点位于对齐区域,则为 TRUE
;否则为 FALSE
。
备注
下表将列出 dwBarAlignment
参数可能的值。
值 | 说明 |
---|---|
CBRS_ALIGN_TOP |
与顶部对齐。 |
CBRS_ALIGN_RIGHT |
向右对齐。 |
CBRS_ALIGN_BOTTOM |
与底部对齐。 |
CBRS_ALIGN_LEFT |
向左对齐。 |
CFrameWndEx::IsPrintPreview
确定框架窗口是否处于打印预览模式。
BOOL IsPrintPreview();
返回值
如果框架窗口处于打印预览模式,则为 TRUE
;否则为 FALSE
。
备注
CFrameWndEx::LoadFrame
在构造后调用此方法以创建框架窗口并加载其资源。
virtual BOOL LoadFrame(
UINT nIDResource,
DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
CWnd* pParentWnd = NULL,
CCreateContext* pContext = NULL);
参数
nIDResource
[in] 用于加载所有框架资源的资源 ID。
dwDefaultStyle
[in] 默认框架窗口样式。
pParentWnd
[in] 指向框架的父窗口的指针。
pContext
[in] 指向框架在应用程序创建期间使用的 CCreateContext
结构类的指针。
返回值
如果此方法成功,则为 TRUE
;否则为 FALSE
。
备注
CFrameWndEx::NegotiateBorderSpace
实现 OLE 客户端边界协商。
virtual BOOL NegotiateBorderSpace(
UINT nBorderCmd,
LPRECT lpRectBorder);
参数
nBorderCmd
[in] 边界协商命令。 有关可能的值,请参阅注解部分。
lpRectBorder
[in, out] 边框的维度。
返回值
如果必须重新计算布局,则为 TRUE
;否则为 FALSE
。
备注
下表将列出 nBorderCmd
参数可能的值。
borderGet
获取可用的 OLE 客户端空间。
borderRequest
请求 OLE 客户端空间。
borderSet
设置 OLE 客户端空间。
CFrameWndEx::OnActivate
当用户输入切换到或远离框架时,框架将调用此方法。
afx_msg void OnActivate(
UINT nState,
CWnd* pWndOther,
BOOL bMinimized);
参数
nState
[in] 框架是活动还是非活动的。 有关可能的值,请参阅注解部分中的表。
pWndOther
[in] 指向正在使用当前窗口切换用户输入的另一个窗口的指针。
bMinimized
[in] 框架的最小化状态。 如果框架已最小化,则为 TRUE
;否则为 FALSE
。
备注
下表将列出 nState
参数可能的值。
值 | 说明 |
---|---|
WA_ACTIVE |
通过鼠标单击以外的方式选择框架。 |
WA_CLICKACTIVE |
通过鼠标单击选择框架。 |
WA_INACTIVE |
未选择框架。 |
CFrameWndEx::OnActivateApp
当选择或取消选择应用程序时由框架调用。
afx_msg void OnActivateApp(
BOOL bActive,
DWORD dwThreadID);
参数
bActive
[in] 如果已选择应用程序,则为 TRUE
;如果未选择应用程序,则为 FALSE
。
dwThreadID
[in] 不使用此参数。
备注
CFrameWndEx::OnChangeVisualManager
当对框架的更改需要更改虚拟管理器时由框架调用。
afx_msg LRESULT OnChangeVisualManager(
WPARAM wParam,
LPARAM lParam);
参数
wParam
[in] 不使用此参数。
lParam
[in] 不使用此参数。
返回值
始终返回 0。
备注
CFrameWndEx::OnClose
框架调用此方法以关闭框架。
afx_msg void OnClose();
备注
如果框架处于打印预览模式,它将发送一条 Windows 消息以关闭打印预览;否则,如果框架托管 OLE 客户端,则该客户端将被停用。
CFrameWndEx::OnCloseDockingPane
当用户单击停靠窗格上的“关闭”按钮时由框架调用。
virtual BOOL OnCloseDockingPane(CDockablePane* pPane);
返回值
如果可以关闭停靠功能条,则为 TRUE
。 否则为 FALSE
备注
默认实现不执行任何操作。 如果想要处理停靠功能条的隐藏,请重写此方法。
CFrameWndEx::OnCloseMiniFrame
当用户单击浮动微型框窗口上的“关闭”按钮时由框架调用。
virtual BOOL OnCloseMiniFrame(CPaneFrameWnd* pWnd);
返回值
如果可以关闭浮动微型框窗口,则为 TRUE
。 否则为 FALSE
。
备注
默认实现不执行任何操作。 如果想要处理浮动微型框窗口的隐藏,请重写此方法。
CFrameWndEx::OnClosePopupMenu
当活动弹出菜单处理 WM_DESTROY
消息时由框架调用。
virtual void OnClosePopupMenu(CMFCPopupMenu* pMenuPopup);
参数
pMenuPopup
指向弹出菜单的指针。
注解
框架在即将关闭窗口时发送消息 WM_DESTROY
。 如果要在 CMFCPopupMenu
对象处理框架在关闭窗口时发送的 WM_DESTROY
消息时处理来自属于框架窗口的 CMFCPopupMenu
对象的通知,请重写此方法。
CFrameWndEx::OnCmdMsg
调度命令消息。
virtual BOOL OnCmdMsg(
UINT nID,
int nCode,
void* pExtra,
AFX_CMDHANDLERINFO* pHandlerInfo);
参数
nID
[in] 命令 ID。
nCode
[in] 命令消息类别。
pExtra
[in, out] 指向命令对象的指针。
pHandlerInfo
[in, out] 指向命令处理程序结构的指针。
返回值
如果已处理命令消息,则为 TRUE
;否则为 FALSE
。
注解
CFrameWndEx::OnContextHelp
由框架调用以显示与上下文相关的帮助。
afx_msg void OnContextHelp();
注解
CFrameWndEx::OnCreate
创建框架后由框架调用。
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
参数
lpCreateStruct
[in] 指向新框架的 CREATESTRUCT
结构的指针。
返回值
0 表示继续创建框架;-1 表示销毁框架。
注解
CFrameWndEx::OnDestroy
销毁框架时由框架调用。
afx_msg void OnDestroy();
备注
已销毁加速器表和所有窗口。
CFrameWndEx::OnDrawMenuImage
当应用程序绘制与菜单项相关的图像时由框架调用。
virtual BOOL OnDrawMenuImage(
CDC* pDC,
const CMFCToolBarMenuButton* pMenuButton,
const CRect& rectImage);
参数
pDC
[in] 指向设备上下文的指针。
pMenuButton
[in] 指向要呈现其图像的菜单按钮的指针。
rectImage
[in] 指向 Rect
结构的指针,该结构指定图像的屏幕位置和大小。
返回值
如果框架成功呈现图像,则为 TRUE
;否则为 FALSE
。
备注
如果要为属于 CFrameWndEx
派生对象拥有的菜单栏的菜单项自定义图像呈现,请重写此方法。
CFrameWndEx::OnDrawMenuLogo
当 CMFCPopupMenu
对象处理 WM_PAINT
消息时由框架调用。
virtual void OnDrawMenuLogo(
CDC* pDC,
CMFCPopupMenu* pMenu,
const CRect& rectLogo);
参数
pDC
[in] 指向设备上下文的指针。
pMenu
[in] 指向菜单项的指针。
rectLogo
[in] 对常量 CRect
结构的引用,该结构指定菜单徽标的屏幕位置和大小。
注解
如果要在属于 CFrameWndEx
派生对象拥有的菜单栏的弹出菜单上显示徽标,请重写此函数。
CFrameWndEx::OnDWMCompositionChanged
当启用或禁用桌面窗口管理器 (DWM) 组合时由框架调用。
afx_msg LRESULT OnDWMCompositionChanged(
WPARAM wp,
LPARAM lp);
参数
wp
[in] 不使用此参数。
lp
[in] 不使用此参数。
返回值
始终返回 0。
注解
CFrameWndEx::OnExitSizeMove
当框架停止移动或调整大小时由框架调用。
LRESULT OnExitSizeMove(
WPARAM wp,
LPARAM lp);
参数
wp
[in] 不使用此参数。
lp
[in] 不使用此参数。
返回值
始终返回 0。
备注
CFrameWndEx::OnGetMinMaxInfo
当重设框架大小以设置窗口尺寸限制时由框架调用。
afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
参数
lpMMI
[in] 指向 MINMAXINFO
结构的指针。
备注
CFrameWndEx::OnIdleUpdateCmdUI
由框架调用以在命令处理空闲时更新框架显示。
afx_msg LRESULT OnIdleUpdateCmdUI(
WPARAM wParam = 0,
LPARAM lParam = 0);
参数
wParam
[in] 不使用此参数。
lParam
[in] 不使用此参数。
返回值
始终返回 0。
备注
CFrameWndEx::OnLButtonDown
当用户按下鼠标左键时,框架将调用此方法。
afx_msg void OnLButtonDown(
UINT nFlags,
CPoint point);
参数
nFlags
[in] 指示用户是否按下了修改键。 有关可能的值,请参阅 WM_LBUTTONDOWN
通知中的参数 wParam
。
point
[in] 指定指针相对于窗口左上角的 x 和 y 坐标。
备注
CFrameWndEx::OnLButtonUp
当用户释放鼠标左键时,框架将调用此方法。
afx_msg void OnLButtonUp(
UINT nFlags,
CPoint point);
参数
nFlags
[in] 指示用户是否按下了修改键。 有关可能的值,请参阅 WM_LBUTTONUP
通知中的参数 wParam
。
point
[in] 指定指针相对于窗口左上角的 x 和 y 坐标。
备注
CFrameWndEx::OnMenuButtonToolHitTest
当 CMFCToolBarButton
对象处理 WM_NCHITTEST
消息时由框架调用。
virtual BOOL OnMenuButtonToolHitTest(
CMFCToolBarButton* pButton,
TOOLINFO* pTI);
参数
pButton
[in] 指向工具栏按钮的指针。
pTI
[out] 指向工具信息结构的指针。
返回值
如果应用程序填充 pTI
参数,则为 TRUE
。 否则为 FALSE
。
备注
如果想要提供有关特定菜单项的工具提示信息,请重写此方法。
CFrameWndEx::OnMenuChar
当显示菜单并且用户按下与命令不对应的键时,由框架调用。
afx_msg LRESULT OnMenuChar(
UINT nChar,
UINT nFlags,
CMenu* pMenu);
参数
nChar
[in] 按下的键的字符代码。
nFlags
[in] 如果显示的菜单是子菜单,则包含 MF_POPUP
标志;如果显示的菜单是控件菜单,则包含 MF_SYSMENU
标志。
pMenu
[in] 指向菜单的指针。
返回值
高序位字必须为下列值之一。
值 | 说明 |
---|---|
0 |
框架应忽略击键。 |
1 |
框架应关闭菜单。 |
2 |
框架应选择菜单中显示的项之一。 低序位字包含要选择的命令的 ID。 |
CFrameWndEx::OnMouseMove
当指针移动时,框架将调用此方法。
afx_msg void OnMouseMove(
UINT nFlags,
CPoint point);
参数
nFlags
[in] 指示用户是否按下了修改键。 有关可能的值,请参阅 WM_MOUSEMOVE
通知中的参数 wParam
。
point
[in] 指定指针相对于窗口左上角的 x
和 y
坐标。
备注
CFrameWndEx::OnMoveMiniFrame
当窗格窗口移动时由框架调用。
virtual BOOL OnMoveMiniFrame(CWnd* pFrame);
参数
pFrame
[in] 指向 CPaneFrameWnd
类窗格窗口的指针。
返回值
如果窗格窗口未停靠,则为 TRUE
;如果窗格窗口已停靠,则为 FALSE
。
备注
CFrameWndEx::OnNcActivate
当必须重新绘制框架的非工作区以指示活动状态发生更改时,由框架调用。
afx_msg BOOL OnNcActivate(BOOL bActive);
参数
bActive
[in] TRUE
表示将框架绘制为活动;FALSE
表示将框架绘制为非活动。
返回值
非零表示继续进行默认处理;0 表示防止非工作区被停用。
注解
CFrameWndEx::OnNcCalcSize
当必须计算工作区的大小和位置时由框架调用。
afx_msg void OnNcCalcSize(
BOOL bCalcValidRects,
NCCALCSIZE_PARAMS FAR* lpncsp);
参数
bCalcValidRects
[in] 当应用程序必须指定有效工作区时为 TRUE
;否则为 FALSE
。
lpncsp
[in] 指向包含框架维度更改的 NCCALCSIZE_PARAMS
结构的指针。
备注
CFrameWndEx::OnNcHitTest
当指针移动或者按下或释放鼠标按钮时,由框架调用。
afx_msg LRESULT OnNcHitTest(CPoint point);
参数
point
[in] 指针在屏幕坐标中的位置。
返回值
指针命中枚举值。 有关可能值的列表,请参阅 WM_NCHITTEST
通知。
备注
CFrameWndEx::OnNcMouseMove
当指针在非工作区中移动时由框架调用。
afx_msg void OnNcMouseMove(
UINT nHitTest,
CPoint point);
参数
nHitTest
[in] 指针命中枚举值。 有关可能值的列表,请参阅 WM_NCHITTEST
通知。
point
[in] 指针在屏幕坐标中的位置。
注解
CFrameWndEx::OnNcPaint
当必须绘制非工作区时由框架调用。
afx_msg void OnNcPaint();
注解
CFrameWndEx::OnPaneCheck
由框架调用以控制窗格的可见性。
afx_msg BOOL OnPaneCheck(UINT nID);
参数
nID
[in] 窗格的控件 ID。
返回值
如果已处理命令,则为 TRUE
;FALSE
表示继续处理命令。
备注
CFrameWndEx::OnPostPreviewFrame
当用户更改打印预览模式时由框架调用。
afx_msg LRESULT OnPostPreviewFrame(
WPARAM wParam,
LPARAM lParam);
参数
wParam
[in] 不使用此参数。
lParam
[in] 当框架处于打印预览模式时为 TRUE
;当打印预览模式关闭时为 FALSE
。
返回值
始终返回 0。
备注
CFrameWndEx::OnPowerBroadcast
当发生电源管理事件时由框架调用。
afx_msg LRESULT OnPowerBroadcast(
WPARAM wp,
LPARAM lp);
参数
wp
[in] 电源管理事件。 有关可能值的列表,请参阅 WM_POWERBROADCAST
消息。
lp
[in] 不使用此参数。
返回值
调用默认窗口过程的结果。
备注
CFrameWndEx::OnSetMenu
由框架调用以替换框架窗口菜单。
afx_msg LRESULT OnSetMenu(
WPARAM wp,
LPARAM lp);
BOOL OnSetMenu(HMENU hmenu);
参数
wp
[in] 新框架窗口菜单的句柄。
lp
[in] 新窗口菜单的句柄。
hmenu
[in] 新框架窗口菜单的句柄。
返回值
LRESULT
是调用默认窗口过程的结果。
如果已处理事件,则 BOOL 为 TRUE
;否则为 FALSE
。
备注
CFrameWndEx::OnSetPreviewMode
由框架调用以设置框架的打印预览模式。
virtual void OnSetPreviewMode(
BOOL bPreview,
CPrintPreviewState* pState);
参数
bPreview
[in] TRUE
表示启用打印预览;FALSE
表示禁用打印预览。
pState
[in] 指向 CPrintPreviewState
框架状态结构的指针。
备注
CFrameWndEx::OnSetText
由框架调用以设置窗口的文本。
afx_msg LRESULT OnSetText(
WPARAM wParam,
LPARAM lParam);
参数
wParam
[in] 不使用此参数。
lParam
[in] 指向窗口文本的指针。
返回值
从对 DefWindowProc
的调用中返回值。
注解
CFrameWndEx::OnShowCustomizePane
当显示 QuickCustomizePane
时由框架调用。
virtual BOOL OnShowCustomizePane(
CMFCPopupMenu* pMenuPane,
UINT uiToolbarID);
参数
pMenuPane
[in] 指向快速自定义窗格的指针。
uiToolbarID
[in] 要自定义的工具栏的控件 ID。
返回值
此方法始终返回 TRUE
。
备注
快速自定义菜单是单击工具栏的自定义按钮时显示的弹出菜单
CFrameWndEx::OnShowPanes
由框架调用以显示或隐藏窗格。
virtual BOOL OnShowPanes(BOOL bShow);
参数
bShow
[in] 如果应用程序显示窗格,则为 TRUE
;否则为 FALSE
。
返回值
此方法始终返回 FALSE
。
备注
如果 bShow
为 TRUE
且窗格处于隐藏状态,或者 bShow
为 FALSE
且窗格可见,则默认实现将显示窗格。
如果 bShow
为 TRUE
且窗格可见,或者 bShow
为 FALSE
且窗格处于隐藏状态,则默认实现将隐藏窗格。
在派生类中替代此方法,以在框架显示或隐藏窗格时执行自定义代码。
CFrameWndEx::OnShowPopupMenu
当显示弹出菜单时由框架调用。
virtual BOOL OnShowPopupMenu(CMFCPopupMenu* pMenu);
参数
pMenu
[in] 指向弹出菜单的指针。
返回值
如果弹出菜单可见,则为 TRUE
;否则为 FALSE
。
注解
在派生类中替代此方法,以在框架显示弹出菜单时执行自定义代码。 例如,替代此方法以更改弹出菜单中命令的背景色。
CFrameWndEx::OnSize
当框架的大小发生更改后由框架调用。
afx_msg void OnSize(
UINT nType,
int cx,
int cy);
参数
nType
[in] 重设大小的类型。 有关可能的值,请参阅 WM_SIZE 通知中的参数 wParam
。
cx
[in] 框架的新宽度(以像素为单位)。
cy
[in] 框架的新高度(以像素为单位)。
备注
CFrameWndEx::OnSizing
当用户重设框架大小时由框架调用。
afx_msg void OnSizing(
UINT fwSide,
LPRECT pRect);
参数
fwSide
[in] 移动的框架边缘。 请参阅 WM_SIZING
通知中的参数 wParam
。
pRect
[in, out] 指向包含框架坐标的 CRect
或 RECT
结构的指针。
备注
CFrameWndEx::OnSysColorChange
当系统颜色发生更改时由框架调用。
void OnSysColorChange();
注解
CFrameWndEx::OnTearOffMenu
当应用程序显示带有拖曳栏的菜单时由框架调用。
virtual BOOL OnTearOffMenu(
CMFCPopupMenu* pMenuPopup,
CPane* pBar);
参数
pMenuPopup
[in] 指向弹出菜单的指针。
pBar
[in] 指向拖曳栏的指针。
返回值
如果启用了带有拖曳栏的弹出菜单,则为 TRUE
;否则为 FALSE
。
备注
在派生类中替代此方法,以在框架显示控件条时执行自定义代码。
默认实现不执行任何操作并返回 TRUE
。
CFrameWndEx::OnToolbarContextMenu
由框架调用以生成工具栏弹出菜单。
afx_msg LRESULT OnToolbarContextMenu(
WPARAM wp,
LPARAM lp);
参数
wp
[in] 不使用此参数。
lp
[in] 不使用此参数。
返回值
始终返回 1。
注解
CFrameWndEx::OnToolbarCreateNew
框架调用此方法以创建新的工具栏。
afx_msg LRESULT OnToolbarCreateNew(
WPARAM wp,
LPARAM lp);
参数
wp
[in] 不使用此参数。
lp
[in] 指向工具栏的标题栏文本的指针。
返回值
指向新工具栏的指针;如果未创建工具栏,则返回 NULL
。
注解
CFrameWndEx::OnToolbarDelete
当删除工具栏时由框架调用。
afx_msg LRESULT OnToolbarDelete(
WPARAM /* unused */,
LPARAM lp);
参数
unused
[in] 不使用此参数。
lp
[in] 指向工具栏的指针。
返回值
如果已删除工具栏,则为 TRUE
;否则为 FALSE
。
备注
CFrameWndEx::OnUpdateFrameMenu
由框架调用以设置框架菜单。
virtual void OnUpdateFrameMenu(HMENU hMenuAlt);
参数
hMenuAlt
[in] 替代菜单的句柄。
备注
CFrameWndEx::OnUpdateFrameTitle
框架调用此方法以更新框架窗口的标题栏。
virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
参数
bAddToTitle
[in] 如果为 TRUE
,则将活动文档标题添加到框架窗口标题栏;否则为 FALSE
。
备注
CFrameWndEx::OnUpdatePaneMenu
由框架调用以更新窗格菜单。
afx_msg void OnUpdatePaneMenu(CCmdUI* pCmdUI);
参数
pCmdUI
[in] 指向窗格用户界面对象的指针。
注解
CFrameWndEx::OnWindowPosChanged
当框架大小、位置或 z 顺序由于调用窗口管理方法而发生更改时,由框架调用。
afx_msg void OnWindowPosChanged(WINDOWPOS FAR* lpwndpos);
参数
lpwndpos
[in] 指向包含新大小和位置的 WINDOWPOS
结构的指针。
注解
CFrameWndEx::PaneFromPoint
在每个窗格中搜索给定点。
CBasePane* PaneFromPoint(
CPoint point,
int nSensitivity,
bool bExactBar,
CRuntimeClass* pRTCBarType) const;
CBasePane* PaneFromPoint(
CPoint point,
int nSensitivity,
DWORD& dwAlignment,
CRuntimeClass* pRTCBarType) const;
参数
point
[in] 要检查的点的屏幕坐标。
nSensitivity
[in] 搜索点时,按此量展开每个控件条的边框。
bExactBar
[in] 如果为 TRUE
,则忽略 nSensitivity
参数;否则为 FALSE
。
pRTCBarType
[in] 如果不为 NULL
,则该方法仅搜索指定类型的控件条。
dwAlignment
[out] 如果成功,则此参数包含控件条最接近指定点的一侧。 否则,不会初始化此参数。
返回值
指向包含 point
的控件条的指针;如果未找到控件,则返回 NULL
。
注解
此方法在应用程序中的所有控件条中搜索 point
。
使用 nSensitivity
增加搜索区域的大小。 使用 pRTCBarType
限制方法搜索的控件条的类型。
CFrameWndEx::PreTranslateMessage
在调度特定窗口消息之前处理这些消息。
virtual BOOL PreTranslateMessage(MSG* pMsg);
参数
pMsg
[in] 指向包含要处理的消息的 MSG
结构的指针。
返回值
如果消息已处理且不应调度,则为非零;如果消息未处理且应调度,则为 0。
备注
CFrameWndEx::RecalcLayout
调整框架及其子窗口的布局。
virtual void RecalcLayout(BOOL bNotify = TRUE);
参数
bNotify
[in] 指定是否将布局更改通知给 OLE 客户端项。
备注
当框架窗口的大小发生更改或者显示或隐藏控件条时,将调用此方法。
CFrameWndEx::RemovePaneFromDockManager
取消注册窗格,并将其从停靠管理器中移除。
void RemovePaneFromDockManager(
CBasePane* pControlBar,
BOOL bDestroy,
BOOL bAdjustLayout,
BOOL bAutoHide,
CBasePane* pBarReplacement);
参数
pControlBar
[in] 指向要移除的控件条窗格的指针。
bDestroy
[in] 如果为 TRUE
,则在移除控件条后销毁控件条;否则为 FALSE
。
bAdjustLayout
[in] 如果为 TRUE
,则调整停靠布局;否则为 FALSE
。
bAutoHide
[in] 如果控件条处于自动隐藏模式,则为 TRUE
;否则为 FALSE
。
pBarReplacement
[in] 指向替换已移除窗格的窗格的指针。
注解
使用此方法可从框架窗口的停靠布局中移除控件条。
CDockingManager
类处理控件条的布局。 必须使用 CFrameWndEx::AddPane
方法或 CFrameWndEx::InsertPane
方法向停靠管理器注册每个控件条。
CFrameWndEx::SetDockState
将停靠布局还原到注册表中存储的停靠状态。
void SetDockState(const CDockState& state);
参数
state
停靠状态。 忽略此参数。
CFrameWndEx::SetPrintPreviewFrame
设置打印预览框架窗口。
void SetPrintPreviewFrame(CFrameWnd* pWnd);
参数
pWnd
[in] 指向打印预览框架窗口的指针。
备注
CFrameWndEx::SetupToolbarMenu
将用户定义的命令插入工具栏菜单中。
void SetupToolbarMenu(
CMenu& menu,
const UINT uiViewUserToolbarCmdFirst,
const UINT uiViewUserToolbarCmdLast);
参数
menu
[in] 要修改的 CMenu
对象。
uiViewUserToolbarCmdFirst
[in] 第一个用户定义的命令。
uiViewUserToolbarCmdLast
[in] 最后一个用户定义的命令。
注解
框架将用户定义的命令存储在列表中。 使用 uiViewUserToolbarCmdFirst
和 uiViewUserToolbarCmdList
指定要插入的命令的索引。
CFrameWndEx::ShowFullScreen
在全屏模式和常规模式之间切换主框架。
void ShowFullScreen();
CFrameWndEx::ShowPane
显示或隐藏指定的窗格。
void ShowPane(
CBasePane* pBar,
BOOL bShow,
BOOL bDelay,
BOOL bActivate);
参数
pBar
[in] 指向要显示或隐藏的控件条的指针。
bShow
[in] 如果为 TRUE
,应用程序将显示控件条。 否则,应用程序将隐藏控件条。
bDelay
[in] 如果为 TRUE
,则延迟停靠布局调整,直到框架调用 CFrameWndEx::AdjustDockingLayout
。 否则,立即重新计算停靠布局。
bActivate
[in] 如果为 TRUE
,则使控件条处于活动状态。 否则,以非活动状态显示控件条。
CFrameWndEx::UpdateCaption
由框架调用以更新窗口框架标题栏。
void UpdateCaption();
备注
CFrameWndEx::WinHelp
调用 WinHelp 应用程序或与上下文相关的帮助。
virtual void WinHelp(
DWORD dwData,
UINT nCmd = HELP_CONTEXT);
参数
dwData
依赖于 nCmd
参数的数据。 有关可能值的列表,请参阅 WinHelp
。
nCmd
help 命令。 有关可能值的列表,请参阅 WinHelp
。