我用 CSplitterWnd 创建了一个 mfc 对话框,它具有三个这样创建的不同面板:
BOOL CUserSplit::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
WINDOWPLACEMENT wpDlg;
GetWindowPlacement(&wpDlg);
if (!m_wndSplitter.CreateStatic(this, 1, 3, WS_CHILD | WS_VISIBLE | WS_BORDER))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CSearchDlg), CSize(250, 0), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}
if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CProfileDlg), CSize(870, 0), pContext))
{
TRACE0("Failed to create second pane\n");
return FALSE;
}
if (!m_wndSplitter.CreateView(0, 2, RUNTIME_CLASS(CControlDlg), CSize(0, 0), pContext))
{
TRACE0("Failed to create third pane\n");
return FALSE;
}
SetWindowPos(NULL, 0, 0, 1285, 900, SWP_NOZORDER | SWP_NOMOVE);
GetParentFrame()->CenterWindow();
return TRUE;
}
这样做时,第一个面板在加载时处于事件状态。如何将第二个(中间)面板设置为事件面板?
最佳答案
你可以像这样获取指定位置的 View :
CView* pView = (CView *)m_pWndSplitter->GetDlgItem(m_pWndSplitter->IdFromRowCol(0, 0));
之后就调用
SetActiveView(pView);
您也可以尝试使用以下方法:
m_pWndSplitter->SetActivePane(nRow, nCol);
关于c++ - 在 CSplitterWnd 中设置事件面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33346775/