COleIPFrameWndEx 类
COleIPFrameWndEx
类实现支持 MFC 的 OLE 容器。 必须从 COleIPFrameWndEx
类派生应用程序的就地框架窗口类,而不是从 COleIPFrameWnd类派生。
有关详细信息,请参阅所安装的 Visual Studio 的 C\atlmfc\src\mfc 文件夹中的源代码。
语法
class COleIPFrameWndEx : public COleIPFrameWnd
成员
公共方法
受保护方法
名称 | 描述 |
---|---|
COleIPFrameWndEx::InitUserToobars | 告知框架初始化一系列分配给用户定义的工具栏的控件 ID。 |
示例
下面的示例演示如何将 COleIPFrameWndEx
类的实例作为子类并重写其方法。 该示例演示如何重写 OnDestory
方法、 RepositionFrame
方法、 RecalcLayout
方法和 CalcWindowRect
方法。 此代码片段属于 Word Pad 示例。
void CInPlaceFrame::OnDestroy()
{
m_wndToolBar.DestroyWindow();
m_wndFormatBar.DestroyWindow();
COleIPFrameWndEx::OnDestroy();
}
void CInPlaceFrame::RepositionFrame(LPCRECT lpPosRect, LPCRECT lpClipRect)
{
CRect rectNew = lpPosRect;
rectNew.left -= HORZ_TEXTOFFSET;
rectNew.top -= VERT_TEXTOFFSET;
m_wndResizeBar.BringWindowToTop();
COleIPFrameWndEx::RepositionFrame(&rectNew, lpClipRect);
CWnd *pWnd = GetActiveView();
if (pWnd != NULL)
pWnd->BringWindowToTop();
m_wndRulerBar.BringWindowToTop();
}
void CInPlaceFrame::RecalcLayout(BOOL bNotify)
{
if (m_wndResizeBar.m_hWnd != NULL)
m_wndResizeBar.BringWindowToTop();
COleIPFrameWndEx::RecalcLayout(bNotify);
CWnd *pWnd = GetActiveView();
if (pWnd != NULL)
pWnd->BringWindowToTop();
if (m_wndRulerBar.m_hWnd != NULL)
m_wndRulerBar.BringWindowToTop();
// at least 12 pt region plus ruler if it exists
CDisplayIC dc;
CSize size;
size.cy = MulDiv(12, dc.GetDeviceCaps(LOGPIXELSY), 72) + 1;
size.cx = dc.GetDeviceCaps(LOGPIXELSX) / 4; // 1/4"
size.cx += HORZ_TEXTOFFSET; //adjust for offset
size.cy += VERT_TEXTOFFSET;
if (m_wndRulerBar.m_hWnd != NULL && m_wndRulerBar.IsVisible())
{
CRect rect;
m_wndRulerBar.GetWindowRect(&rect);
size.cy += rect.Height();
}
m_wndResizeBar.SetMinSize(size);
}
void CInPlaceFrame::CalcWindowRect(LPRECT lpClientRect, UINT nAdjustType)
{
COleIPFrameWndEx::CalcWindowRect(lpClientRect, nAdjustType);
}
继承层次结构
要求
标头: afxoleipframewndex.h
COleIPFrameWndEx::AddDockSite
void AddDockSite();
备注
COleIPFrameWndEx::AddPane
BOOL AddPane(
CBasePane* pControlBar,
BOOL bTail = TRUE);
参数
[in] pControlBar
[in] bTail
返回值
注解
COleIPFrameWndEx::AdjustDockingLayout
virtual void AdjustDockingLayout(HDWP hdwp = NULL);
参数
[in] hdwp
注解
COleIPFrameWndEx::DockPane
void DockPane(
CBasePane* pBar,
UINT nDockBarID = 0,
LPCRECT lpRect = NULL);
参数
[in] pBar
[in] nDockBarID
[in] lpRect
注解
COleIPFrameWndEx::DockPaneLeftOf
将一个窗格停靠到另一个窗格的左侧。
BOOL DockPaneLeftOf(
CPane* pBar,
CPane* pLeftOf);
参数
pBar
[in] 指向要停靠的窗格的指针。
pLeftOf
[in] 指向充当原点的窗格的指针。
返回值
如果操作成功,则返回 TRUE。 否则返回 FALSE。
注解
调用此方法以预定义的顺序停靠多个窗格对象。 此方法将 pBar 指定的窗格停靠在 pLeftOf 指定的窗格左侧。
COleIPFrameWndEx::EnableAutoHidePanes
BOOL EnableAutoHidePanes(DWORD dwDockStyle);
参数
[in] dwDockStyle
返回值
备注
COleIPFrameWndEx::EnableDocking
BOOL EnableDocking(DWORD dwDockStyle);
参数
[in] dwDockStyle
返回值
备注
COleIPFrameWndEx::EnablePaneMenu
void EnablePaneMenu(
BOOL bEnable,
UINT uiCustomizeCmd,
const CString& strCustomizeLabel,
UINT uiViewToolbarsMenuEntryID,
BOOL bContextMenuShowsToolbarsOnly = FALSE,
BOOL bViewMenuShowsToolbarsOnly = FALSE);
参数
[in] bEnable
[in] uiCustomizeCmd
[in] strCustomizeLabel
[in] uiViewToolbarsMenuEntryID
[in] bContextMenuShowsToolbarsOnly
[in] bViewMenuShowsToolbarsOnly
备注
COleIPFrameWndEx::GetActivePopup
返回一个指向当前显示的弹出菜单的指针。
CMFCPopupMenu* GetActivePopup() const;
返回值
指向活动弹出菜单的指针;否则为 NULL。
备注
使用此方法获取指向当前显示的 CMFCPopupMenu 类对象的指针。
COleIPFrameWndEx::GetContainerFrameWindow
COleCntrFrameWndEx* GetContainerFrameWindow();
返回值
注解
COleIPFrameWndEx::GetDefaultResId
返回在框架窗口加载菜单时指定的菜单资源 ID。
UINT GetDefaultResId() const;
返回值
返回菜单的资源 ID,如果框架窗口没有菜单栏,则返回 0。
备注
调用此函数以检索在框架窗口通过调用 COleIPFrameWndEx::LoadFrame
加载菜单资源时指定的资源 ID。
COleIPFrameWndEx::GetDockFrame
CFrameWnd* GetDockFrame();
返回值
注解
COleIPFrameWndEx::GetDockingManager
CDockingManager* GetDockingManager();
返回值
注解
COleIPFrameWndEx::GetMainFrame
CFrameWnd* GetMainFrame();
返回值
备注
COleIPFrameWndEx::GetMenuBar
返回一个指向附加到框架窗口的菜单栏对象的指针。
const CMFCMenuBar* GetMenuBar() const;
返回值
指向菜单栏对象的指针。
注解
使用此函数可检索指向属于 COleIPFrameWndEx
对象的菜单栏对象的指针。
COleIPFrameWndEx::GetPane
CBasePane* GetPane(UINT nID);
参数
[in] nID
返回值
注解
COleIPFrameWndEx::GetTearOffBars
返回处于拖曳状态的窗格对象的列表。
const CObList& GetTearOffBars() const;
返回值
对 CObList
对象的引用,该对象包含指向 CBasePane 类派生对象的指针集合。
注解
COleIPFrameWndEx
对象将拖曳菜单的集合保留为 CBasePane 类派生对象的列表。 使用此方法可检索对此列表的引用。
COleIPFrameWndEx::GetToolbarButtonToolTipText
在显示按钮的工具提示之前由框架调用。
virtual BOOL GetToolbarButtonToolTipText(
CMFCToolBarButton* pButton,
CString& strTTText);
参数
pButton
[in] 指向按钮的指针。
strTTText
[in] 指向工具提示文本的指针。
返回值
默认实现将返回 0。
注解
重写此函数以自定义工具栏按钮上的工具提示显示。
COleIPFrameWndEx::InitUserToobars
指定框架分配给用户定义的工具栏的一系列控件 ID。
void InitUserToolbars(
LPCTSTR lpszRegEntry,
UINT uiUserToolbarFirst,
UINT uiUserToolbarLast)
参数
lpszRegEntry
[in] 库在其中存储用户工具栏设置的注册表项。
uiUserToolbarFirst
[in] 分配给第一个用户定义的工具栏的控制 ID。
uiUserToolbarLast
[in] 分配给最后一个用户定义的工具栏的控制 ID。
注解
使用此函数初始化一系列控件 ID,以便分配给用户动态定义的工具栏。 参数 uiUserToolbarFirst 和 uiUserToolbarLast 定义允许的工具栏控件 ID 的范围。 若要禁用用户定义工具栏的创建,请将 uiUserToolbarFirst 或 uiUserToolbarLast 设置为 -1。
COleIPFrameWndEx::InsertPane
BOOL InsertPane(
CBasePane* pControlBar,
CBasePane* pTarget,
BOOL bAfter = TRUE);
参数
[in] pControlBar
[in] pTarget
[in] bAfter
返回值
注解
COleIPFrameWndEx::IsMenuBarAvailable
确定指向菜单栏对象的指针是否不是 NULL
BOOL IsMenuBarAvailable() const;
返回值
如果框架窗口具有菜单栏,则返回非零值;否则返回 0。
备注
调用此方法以确定框架窗口是否维护指向其菜单栏对象的非 NULL 指针。
COleIPFrameWndEx::IsPointNearDockSite
BOOL IsPointNearDockSite(
CPoint point,
DWORD& dwBarAlignment,
BOOL& bOuterEdge) const;
参数
[in] point
[in] dwBarAlignment
[in] bOuterEdge
返回值
注解
COleIPFrameWndEx::LoadFrame
virtual BOOL LoadFrame(
UINT nIDResource,
DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
CWnd* pParentWnd = NULL,
CCreateContext* pContext = NULL);
参数
[in] nIDResource
[in] dwDefaultStyle
[in] pParentWnd
[in] pContext
返回值
注解
COleIPFrameWndEx::OnCloseDockingPane
virtual BOOL OnCloseDockingPane(CDockablePane*);
参数
[in] CDockablePane*
返回值
备注
COleIPFrameWndEx::OnCloseMiniFrame
virtual BOOL OnCloseMiniFrame(CPaneFrameWnd*);
参数
[in] CPaneFrameWnd*
返回值
备注
COleIPFrameWndEx::OnClosePopupMenu
当活动的弹出菜单处理 WM_DESTROY 消息时由框架调用。
virtual void OnClosePopupMenu(CMFCPopupMenu* pMenuPopup);
参数
pMenuPopup
[in] 指向弹出菜单对象的指针。
注解
重写此方法以在处理 WM_DESTROY 消息时接收来自 CMFCPopupMenu
对象的通知。
COleIPFrameWndEx::OnCmdMsg
virtual BOOL OnCmdMsg(
UINT nID,
int nCode,
void* pExtra,
AFX_CMDHANDLERINFO* pHandlerInfo);
参数
[in] nID
[in] nCode
[in] pExtra
[in] pHandlerInfo
返回值
注解
COleIPFrameWndEx::OnDrawMenuImage
当绘制与菜单项关联的图像时由框架调用。
virtual BOOL OnDrawMenuImage(
CDC* pDC,
const CMFCToolBarMenuButton* pMenuButton,
const CRect& rectImage);
参数
pDC
[in] 指向设备上下文的指针。
pMenuButton
[in] 指向菜单按钮的指针。
rectImage
[in] 与菜单项关联的图像。
返回值
默认实现不执行任何操作并返回 0。
备注
如果要为属于 COleIPFrameWndEx
派生对象拥有的菜单栏的菜单项自定义绘图,请重写此方法。
COleIPFrameWndEx::OnDrawMenuLogo
当 CMFCPopupMenu对象处理 WM_PAINT 消息时由框架调用。
virtual void OnDrawMenuLogo(
CDC* pDC,
CMFCPopupMenu* pMenu,
const CRect& rectLogo);
参数
pDC
[in] 指向设备上下文的指针。
pMenu
[in] 指向弹出菜单对象的指针。
rectLogo
[in] 指向要显示的徽标的指针。
备注
重写此方法以在与 COleIPFrameWndEx
派生对象拥有的菜单栏关联的弹出菜单上显示徽标。 默认实现不执行任何操作。
COleIPFrameWndEx::OnMenuButtonToolHitTest
当 CMFCToolBarButton对象处理 WM_NCHITTEST 消息时由框架调用。
virtual BOOL OnMenuButtonToolHitTest(
CMFCToolBarButton* pButton,
TOOLINFO* pTI);
参数
[in] pButton 指向菜单按钮的指针。
[out] pTI 指向 TOOLINFO
结构的指针。
返回值
默认实现不执行任何操作并返回 0。 如果实现填充 pTI 参数,则实现应返回非零值。
备注
重写此方法以提供有关特定菜单项的工具提示信息。
COleIPFrameWndEx::OnMoveMiniFrame
virtual BOOL OnMoveMiniFrame(CWnd* pFrame);
参数
[in] pFrame
返回值
备注
COleIPFrameWndEx::OnSetPreviewMode
virtual void OnSetPreviewMode(
BOOL bPreview,
CPrintPreviewState* pState);
参数
[in] bPreview
[in] pState
注解
COleIPFrameWndEx::OnShowCustomizePane
virtual BOOL OnShowCustomizePane(
CMFCPopupMenu* pMenuPane,
UINT uiToolbarID);
参数
[in] pMenuPane
[in] uiToolbarID
返回值
备注
COleIPFrameWndEx::OnShowPanes
virtual BOOL OnShowPanes(BOOL bShow);
参数
[in] bShow
返回值
注解
COleIPFrameWndEx::OnShowPopupMenu
当显示弹出菜单时由框架调用。
virtual BOOL OnShowPopupMenu(CMFCPopupMenu* pMenuPopup);
参数
pMenuPopup
[in] 指向要显示的弹出菜单的指针。
返回值
默认实现不执行任何操作并返回非零值。 如果无法显示弹出窗口菜单,则实现应返回 FALSE。
备注
重写此方法以自定义弹出菜单的显示。 例如,可以将菜单按钮更改为颜色菜单按钮或初始化拖曳栏。
COleIPFrameWndEx::OnTearOffMenu
当用户选择带有拖曳栏的菜单时由框架调用。
virtual BOOL OnTearOffMenu(
CMFCPopupMenu* pMenuPopup,
CPane* pBar);
参数
pMenuPopup
[in] 指向用户选择的弹出菜单的指针。
pBar
[in] 指向承载菜单的窗格的指针。
返回值
如果希望框架激活弹出菜单,则为 TRUE;否则为 FALSE。 默认值为 TRUE。
注解
如果要自定义拖曳栏的设置,请重写此函数。
COleIPFrameWndEx::PaneFromPoint
CBasePane* PaneFromPoint(
CPoint point,
int nSensitivity,
bool bExactBar,
CRuntimeClass* pRTCBarType) const;
CBasePane* PaneFromPoint(
CPoint point,
int nSensitivity,
DWORD& dwAlignment,
CRuntimeClass* pRTCBarType) const;
参数
[in] point
[in] nSensitivity
[in] bExactBar
[in] pRTCBarType
[in] dwAlignment
返回值
备注
COleIPFrameWndEx::PreTranslateMessage
virtual BOOL PreTranslateMessage(MSG* pMsg);
参数
[in] pMsg
返回值
备注
COleIPFrameWndEx::RecalcLayout
virtual void RecalcLayout(BOOL bNotify = TRUE);
参数
[in] bNotify
注解
COleIPFrameWndEx::RemovePaneFromDockManager
void RemovePaneFromDockManager(
CBasePane* pControlBar,
BOOL bDestroy,
BOOL bAdjustLayout,
BOOL bAutoHide,
CBasePane* pBarReplacement);
参数
[in] pControlBar
[in] bDestroy
[in] bAdjustLayout
[in] bAutoHide
[in] pBarReplacement
备注
COleIPFrameWndEx::SetDockState
将指定的停靠状态应用于属于框架窗口的窗格。
void SetDockState(const CDockState& state);
参数
State
[in] 指定停靠状态。
备注
使用此函数可为属于 COleIPFrameWndEx
对象的窗格指定新的停靠状态。
COleIPFrameWndEx::SetupToolbarMenu
通过搜索虚拟项并将其替换为指定的用户定义项修改工具栏对象。
void SetupToolbarMenu(
CMenu& menu,
const UINT uiViewUserToolbarCmdFirst,
const UINT uiViewUserToolbarCmdLast);
参数
菜单
[in] 对要修改的 CMenu 对象的引用。
uiViewUserToolbarCmdFirst
[in] 指定第一个用户定义的命令。
uiViewUserToolbarCmdLast
[in] 指定最后一个用户定义的命令。
备注
COleIPFrameWndEx::ShowPane
void ShowPane(
CBasePane* pBar,
BOOL bShow,
BOOL bDelay,
BOOL bActivate);
参数
[in] pBar
[in] bShow
[in] bDelay
[in] bActivate
注解
COleIPFrameWndEx::WinHelpA
由框架调用以启动 WinHelp 应用程序或上下文帮助。
virtual void WinHelp(
DWORD dwData,
UINT nCmd = HELP_CONTEXT);
参数
[in] dwData 根据由 nCmd 指定的帮助类型的要求指定数据。
nCmd
[in] 指定请求的帮助的类型。 有关可能值的列表和这些值是如何影响 dwData 参数的相关信息,请参阅 Windows SDK 中的 WinHelp 函数。