我正在尝试使用 CMDIChildWnd、2 个 CSplitterWnd 和 3 个 CFormView 创建一个包含 3 个视图的分层窗口:
- 包含静态控件的表单视图
- 显示用于查看 PDF 文档的主窗口的表单
- 与主视图相关的一些操作的侧面板
主拆分器(包含 MainView 和 TaskPane)初始化为 1 行和 2 列。第二个拆分器包含 2 行和 1 列,包含选项卡和主拆分器。
此图像描述了它应该如何构建:
我的问题是 MainView 没有焦点,因此,工具栏按钮未启用缩放、另存为等...
当我不使用横幅拆分器时,它工作正常。我尝试了 setActivePane() setFocus() setActiveWindow() 这是我在 CChildFrame::OnCreateClient() 中创建它的方法
if (m_BannerSplitter->CreateStatic(this, 2, 1))
{
m_BannerSplitter->CreateView(0,
0,
RUNTIME_CLASS(CBannerView),
CSize(r.Width(),28),
pContext);
m_splitter->CreateStatic(m_BannerSplitter,
1,
2,
WS_CHILD | WS_VISIBLE | WM_SHOWWINDOW,
m_BannerSplitter->IdFromRowCol(1,0));
}
else
{
m_splitter->CreateStatic(this, 1, 2);
}
m_splitter->CreateView(0,
0,
RUNTIME_CLASS(CMainView),
CSize(r.Width()-m_splitter->m_iRightTabFullWidth-14,1),
pContext);
m_splitter->CreateView(0,
1,
RUNTIME_CLASS(CTasksView),
CSize(m_splitter->m_iRightTabFullWidth, 1),
pContext);
m_splitter->SetColumnInfo(1,
m_splitter->m_iRightTabFullWidth,
m_splitter->m_iRightTabFullWidth);