- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要将 CView 派生类放入 CDockablePane 中。某处有任何代码示例,或者有人可以提供这样的代码吗?
我尝试过的:
显然应该很简单,我在网上找到了诸如“只需创建 View 并将其父项设置为对话框或可停靠 Pane 或您想要的窗口类型”之类的建议。但由于某种原因它不起作用,也许是因为它需要一个 CFrameWnd,我不知道。
无论如何,我需要能够在不创建另一个文档模板类的情况下执行此操作。只是为了使用预先存在的文档和 View 类。
最佳答案
这是一个例子:
派生自 CDockablePane 的类:
//CRichEditPane.h
class CRichEditPane : public CDockablePane
{
DECLARE_DYNAMIC(CRichEditPane)
public:
CRichEditPane();
virtual ~CRichEditPane();
protected:
void AdjustLayout();
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSize(UINT nType, int cx, int cy);
};
//CRichEditPane.cpp
IMPLEMENT_DYNAMIC(CRichEditPane, CDockablePane)
CRichEditPane::CRichEditPane()
{
}
CRichEditPane::~CRichEditPane()
{
}
BEGIN_MESSAGE_MAP(CRichEditPane, CDockablePane)
ON_WM_CREATE()
ON_WM_SIZE()
END_MESSAGE_MAP()
// CRichEditPane message handlers
int CRichEditPane::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDockablePane::OnCreate(lpCreateStruct) == -1)
return -1;
CRuntimeClass *pClass = RUNTIME_CLASS(CRichEditViewInPane);
// calling constructor using IMPLEMENT_DYNCREATE macro
CRichEditViewInPane *pView = (CRichEditViewInPane*)pClass->CreateObject();
if (!pView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0,0,0,0), this, AFX_IDW_PANE_FIRST, NULL))
{
return -1;
}
CRichEditCtrl ctrl;
ctrl.Create(WS_CHILD, CRect(0, 0, 0, 0), this, 10991);
return 0;
}
void CRichEditPane::OnSize(UINT nType, int cx, int cy)
{
CDockablePane::OnSize(nType, cx, cy);
AdjustLayout();
}
a view class derived from CView:
//CRichEditViewInPane.h
class CRichEditViewInPane : public CRichEditView
{
DECLARE_DYNCREATE(CRichEditViewInPane)
protected:
CRichEditViewInPane(); // protected constructor used by dynamic creation
virtual ~CRichEditViewInPane();
public:
#ifdef _DEBUG
virtual void AssertValid() const;
#ifndef _WIN32_WCE
virtual void Dump(CDumpContext& dc) const;
#endif
#endif
protected:
DECLARE_MESSAGE_MAP()
};
//CRichEditViewInPane. cpp
IMPLEMENT_DYNCREATE(CRichEditViewInPane, CRichEditView)
CRichEditViewInPane::CRichEditViewInPane()
{
}
CRichEditViewInPane::~CRichEditViewInPane()
{
}
BEGIN_MESSAGE_MAP(CRichEditViewInPane, CRichEditView)
END_MESSAGE_MAP()
关于c++ - MFC CView 到 CDockablePane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27331291/
我有 3 个可停靠 Pane ,每个 Pane 包含 1 张图像。一个在左边,一个在右边,一个不可见。问题是,我想默认隐藏右边的那个,让左边的占据整个空间。我搜索了文档,发现我应该在我的 Pane 中
我可以从CDockablePane 中隐藏关闭按钮 并防止它关闭吗?我在刚刚用谷歌搜索的 header 中找不到 CanBeClosed 方法。我想我可以使用 PreTranslateMessage
我启动了一个单文档 MFC 项目,并创建了两个 CDockablePane。 我遇到的问题是,如果我移动或调整 Pane 大小并退出程序,当我重新启动程序时它们的布局不会重置。他们的布局保持修改。 我
我有一个使用 Visual Studio 2008 实现的单文档 MFC 项目。 这是我遇到的问题的图片。为了您的安全,此图像已被编辑。 如果图像没有加载到您的网络浏览器中,这里是它的 ASCII 渲
我正在升级一个旧的 MFC 项目以使用 MFC 功能包和功能区。我将派生自 CControlBar 的 Pane 更改为派生自 CDockablePane 并且效果很好,但它看起来仍然很旧并且不与功能
我正在移植一个 MFC 应用程序以使用 Ribbon UI 和 MFC 功能包,并希望有一个不包含标题的停靠水平 Pane 。我希望像 MyPane.ModifyStyle(WS_CAPTION, 0
我正在 Visual Studio 2012 上编写 SDI 应用程序。MFC 向导生成了两个 CDockablePane 派生对象。右侧的 CPropertiesWnd(CDockablePane
我想在我的 MDI 子窗口中创建两个 CDockablePane 对象。最初,它们应该停靠在底部,但用户可以 float 它们。我从 MFC 项目向导创建的代码开始。然后,我将代码从表示主框架的类移动
在我的 MFC(功能包)应用程序中,可以动态创建停靠 Pane 以显示图表/表格等。 但是,我不想让用户打开同一个东西两次。 我创建了这样一个 Pane : // Create CMyDockable
我想在 CDockablePane 中托管对话框项目,例如 slider 、按钮和编辑框。我想将它们分组,每个都有单独的下拉列表,如下图所示。 MFC中是否有一些类来实现它? 最佳答案 CMFCTas
我需要将 CView 派生类放入 CDockablePane 中。某处有任何代码示例,或者有人可以提供这样的代码吗? 我尝试过的: 显然应该很简单,我在网上找到了诸如“只需创建 View 并将其父项设
我正在做一个完全不想使用MFC内置的window/dock状态和位置保存的项目。这意味着在我的主框架中,我设置了 EnableLoadDockState(FALSE)。尽管我很想将其改回 TRUE,但
如何强制刷新 MFC 功能包中 CDockablePane 的标题?我正在使用选项卡式 Visual Studio 样式示例,并且我想更改选项卡的标题。 这些似乎被缓存在某个地方,因为当我更改默认值时
我有一个 CDockablePane,它包含一个基于 CTreeCtrl 的自定义控件。 当我移动 CDockablePane 时,所有内容都会正确刷新。当我调整 CDockablePane 的大小时
所以我想采用我正在处理的当前程序并使所有内部窗口都可以停靠。唯一的问题是它们扩展了一个名为 CFBView 的类,该类扩展了 CView。如果我也扩展 CDockablePane,它将导致无法正确编译
我在 CDockablePane 中创建了 CMFCPropertyGridCtrl,我想用一个新的替换这个 CMFCPropertyGridCtrl,然后我覆盖 OnEraseBkgnd。OnEra
如何将 MFC CFormView 放置在 VS 2008 MFC 功能包中引入的 CDockablePane 中? 最佳答案 检查 BCGSoft使用 cview 执行此操作的示例。类名略有不同,但
我是一名优秀的程序员,十分优秀!