首页 新闻 搜索 专区 学院

MFC单文档分割窗口中使用tabcontrol按钮无响应

0
悬赏园豆:30 [待解决问题]

对单文档窗口进行分割为一个CView类型的视图区和CFormView类型的对话框,在CFormView中创建TabCtrl控件,该控件中有多个CDialog类型的对话框。需要分割窗口成功,就需要把CFormView对话框属性改为Child,但是这样的话TabCtrl中的对话框均不能响应按钮和文本框操作(http://www.xuebuyuan.com/731458.html),怎么修改才能符合要求?有的分都压上了,望见谅,望大神给予指导。

分割窗口:
[code=c]
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
CRect client_rect;
GetClientRect(&client_rect);
m_wndSplitter.CreateStatic(this,1,2);//创建静态分隔符将视图一分为二
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CProcess), CSize(400, 0), pContext); //CParentDialog是父对话框类
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CDocTestView), CSize(client_rect.Width() - 400, 0), pContext); //CImageViewView是视图类
SetActiveView((CDocTestView*)m_wndSplitter.GetPane(0,0)); //指定类视图
return TRUE;
//return CFrameWndEx::OnCreateClient(lpcs, pContext);
}
[/code]

添加页面:
[code=c]
void CProcess::OnInitialUpdate()
{
CFormView::OnInitialUpdate();

// TODO: 在此添加专用代码和/或调用基类
// 添加Tab页
//m_tab.ModifyStyle(DS_CONTROL, 0);
//m_tab.ModifyStyleEx(0, WS_EX_CONTROLPARENT);

m_tab.InsertItem(0, "加工");
m_tab.InsertItem(1, "绘图");

m_page1.Create(IDD_DIALOG2, GetDlgItem(IDD_PROCESS));
m_page2.Create(IDD_DIALOG1, GetDlgItem(IDD_PROCESS));

//调整位置
CRect rect;
m_tab.GetWindowRect(&rect);
/*this->GetWindowRect(&rect);
m_tabCtrl.GetClientRect(&rect);
this->GetClientRect(&rect);
this->GetParent()->GetClientRect(&rect);*/

rect.top -= 2;
rect.bottom -= 25;
rect.left += 1;
rect.right -= 4;

m_page1.MoveWindow(&rect);
m_page2.MoveWindow(&rect);

m_page1.ShowWindow(FALSE);
m_page2.ShowWindow(TRUE);

m_tab.SetCurSel(2);
}
[/code]

界面如图:

Sky_Watcher的主页 Sky_Watcher | 初学一级 | 园豆:120
提问于:2014-08-26 19:50
< >
分享
所有回答(1)
0

这个问题比较冷门。

Firen | 园豆:5483 (大侠五级) | 2014-08-28 08:39

应该是蛮老的问题了!目前是用CPropertySheet+CPropertyPage来解决的,中间也遇到一些纠结的Unicode导致界面只能使用老版本的样式,不然背景就直接变白色(不过可以通过绘制背景来恢复默认颜色),折腾的差不多了,但还是希望上面的问题的到比较好的解释或者解决办法。谢谢你的回复

支持(0) 反对(0) Sky_Watcher | 园豆:120 (初学一级) | 2014-08-28 08:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册