【问题标题】:How to split a DockablePane into CView and CFormView如何将 DockablePane 拆分为 CView 和 CFormView
【发布时间】:2016-05-11 19:28:52
【问题描述】:

我想知道我们如何使用 CSplitterWndEx 将 DockablePane 拆分为 CView(用于绘制矩形/线条等)和 CFormView(用于放置 UI 控件,例如按钮、组合框等)。 DockablePane 将成为 MDI 应用程序的一部分。代码示例将非常有帮助。我在 MyDockablePane::OnCreate 函数上尝试了以下代码,但它只是显示了一个没有拆分器的“空白”DockablePane 窗口:(感谢您花时间研究它)

int MyDockablePane::OnCreate(LPCREATESTRUCT lpcs)
{
   if (CDockablePane::OnCreate(lpcs) == -1)
     return -1;

  CRect cr;
  GetClientRect(&cr);

  m_wndSplitter.CreateStatic(this,1,2);

  // MyFormView derived from CFormView
  if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(MyFormView),
    CSize(cr.Width() *48/100, cr.Height()), NULL))
  {
    return FALSE;
  }

  // MyCView derived from CView
  if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(MyCView),
    CSize(cr.Width() * 52/100, cr.Height()), NULL))
  {
    return FALSE;
  }

  return TRUE;

}

// 在 MainFrame 我调用 DockablePane 的 Create, ShowPane, // EnableDocking,以及MainFrame的DockPane

【问题讨论】:

  • 你不能创建两个可停靠的窗格吗?一个与 CView 和一个与 CFormView?您可以添加指向彼此的指针,以便他们轻松交流。
  • 感谢 Robson 的想法。如果我需要带有 CFormView 的 DockablePane,我可以创建 CPaneDialog。我面临的问题是我希望它们(CView 和 CFormView)都在同一个窗口上。我来自 C++ Borland Builder 背景,不知道 MFC 这么难。
  • 那么欢迎加入! =)

标签: mfc


【解决方案1】:

尝试在代码末尾添加:

m_wndSplitter.SetWindowPos(NULL,cr.left, cr.top, cr.Width(), cr.Height(), SWP_NOZORDER);
m_wndSplitter.ShowWindow(SW_SHOW);

【讨论】:

  • 在'return TRUE;'之前=)
猜你喜欢
  • 2015-12-16
  • 2011-12-18
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 2012-03-13
  • 1970-01-01
相关资源
最近更新 更多