标题:怎样才能添加底部控制窗口呢?
取消只看楼主
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
 问题点数:0 回复次数:6 
怎样才能添加底部控制窗口呢?
我想在程序的底部添加一个底部控制窗口,就像visual studio的一样,当上面的视图发生改变时,这个控制窗口的内容也随着变化,开始的时候想用窗口分割做,可是效果不太理想,于是想如果能加入一个和vs一样的控制窗口就好了,之前没做过类似的东西,有没有谁也用过这样的窗口,能大概说一下怎么做吗?不胜感激!
搜索更多相关主题的帖子: 窗口 效果 视图 visual studio 
2006-10-03 22:30
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
得分:0 

参考书上的例子做了一下,窗口分割开了,可是分割的大小却总变,本来我是打算把窗口分成5:1的两个,运行以后开始没有小窗口,最大化以后出来两个差不多大的,这是我的代码,能帮忙看看有什么问题吗?谢谢 (CSplitterWnd m_wndSplitter;)

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
CRect rcClient(0, 0, 0, 0);
GetClientRect(rcClient);

if(m_wndSplitter.CreateStatic(this,2,1)==NULL)
return FALSE;
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CMyWorkView),CSize(rcClient.Width(), rcClient.Height()*5/6),pContext);
m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(COperateView),CSize(rcClient.Width(), rcClient.Height()/6),pContext);
return TRUE;
}


生活充满阳光,快乐无处不在
2006-10-09 09:16
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
得分:0 
以下是引用wfpb在2006-10-9 10:03:59的发言:
运行以后开始没有小窗口//不会的,会有窗口的。

最大化以后出来两个差不多大的//没有响应OnSize,在那里面去处理,应该可以。

试试MoveWindow可能可以。用GetPane应该能得到。

能说的详细点吗?OnSize是自己加上去的吧?主要处理什么呢?


生活充满阳光,快乐无处不在
2006-10-09 10:25
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
得分:0 

运行以后开始没有小窗口//不会的,会有窗口的。
确实没有小窗口,最大化以后才出线两个窗口
添加了OnSize,效果和原来的一样
CSize Up;
CSize Down;


void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);

CRect rcClient(0, 0, 0, 0);
GetClientRect(rcClient);
Up.cx=rcClient.Width();
Up.cy=rcClient.Height()*5/6;
Down.cx=rcClient.Width();
Down.cy=rcClient.Height()*5/6;
}
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{

if(m_wndSplitter.CreateStatic(this,2,1)==NULL)
return FALSE;
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CMyWorkView),Up,pContext);
m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(COperateView),Down,pContext);
return TRUE;
}


生活充满阳光,快乐无处不在
2006-10-09 10:57
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
得分:0 
这个函数是用来分割窗口的

生活充满阳光,快乐无处不在
2006-10-09 11:51
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
得分:0 

你的意思是在OnSize函数里添加分割窗口的代码?每次改变边框大小产生WM_SIZE消息,相应OnSize函数,重新分割窗口?
我试了试,编译没问题,但是运行不了
我是这样理解的:
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{

CRect rcClient(0, 0, 0, 0);
GetClientRect(rcClient);
Up.cx=rcClient.Width();
Up.cy=rcClient.Height()*5/6;
Down.cx=rcClient.Width();
Down.cy=rcClient.Height()*1/6;

CCreateContext context;
CDocument *pDoc = GetActiveView()->GetDocument();
context.m_pCurrentDoc=pDoc;

if(m_wndSplitter.CreateStatic(this,2,1)==NULL)
return;
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CMyWorkView),Up,&context);
m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(COperateView),Down,&context);

}

[此贴子已经被作者于2006-10-9 12:56:34编辑过]


生活充满阳光,快乐无处不在
2006-10-09 12:55
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
得分:0 
能说仔细点吗?改变谁的位置?怎么改变?

生活充满阳光,快乐无处不在
2006-10-09 13:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-94123-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.095055 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved