在csplitterwind中设置活动面板
Set active panel in CSplitterWnd
我用csplitterwind创建了一个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 CreateStaticSplittern");
return FALSE;
}
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CSearchDlg), CSize(250, 0), pContext))
{
TRACE0("Failed to create first panen");
return FALSE;
}
if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CProfileDlg), CSize(870, 0), pContext))
{
TRACE0("Failed to create second panen");
return FALSE;
}
if (!m_wndSplitter.CreateView(0, 2, RUNTIME_CLASS(CControlDlg), CSize(0, 0), pContext))
{
TRACE0("Failed to create third panen");
return FALSE;
}
SetWindowPos(NULL, 0, 0, 1285, 900, SWP_NOZORDER | SWP_NOMOVE);
GetParentFrame()->CenterWindow();
return TRUE;
}
当这样做时,第一个面板在负载上是活跃的。如何将第二个(中间)面板设置为活动状态?
你可以像这样获取指定位置的视图:
CView* pView = (CView *)m_pWndSplitter->GetDlgItem(m_pWndSplitter->IdFromRowCol(0, 0));
之后调用
SetActiveView(pView);
您也可以尝试使用以下方法:
m_pWndSplitter->SetActivePane(nRow, nCol);
根据MSDN,你应该调用csplitterwind::SetActivePane()
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 嵌套在类中时无法设置成员数据
- 需要帮助设置在C++中使用的Potrace
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 如何在Ubuntu中使用cmake设置qt4
- 如何在QT中为QInputDialog输入密码时设置背景非活动和灰色?
- Delphi / C 构建器 - 在TDBGrid中设置活动 /选择的行颜色
- 在C++的联合中显式设置活动成员
- 如何使用C++在活动目录的属性中设置值
- Winapi设置活动选项卡控件
- nvapi设置活动眼图返回错误
- 为所有openvdb::Grid节点设置/取消设置活动状态
- 如何在OSX中使用C++opencv highgui将活动窗口设置为opencv图像
- 在csplitterwind中设置活动面板
- Qt-> 如何将 ALT 键设置为活动状态
- 如何基于QProcess将窗口设置为活动窗口
- 当窗口设置为活动状态时获取通知