老问题,动态分割窗口的,我都不好意思问。


在VC++的MFC编程中分割窗口分为两类,一种是调用Create动态分割,另一种是调用CreateStatic静态分割,静态分割已经有很详尽的代码了,我就不问了,请教一下动态分割的问题,
按照现在查到的方法,应该是先生成一个CSplitterWnd的对象:
CSplitterWnd m_SplitterWnd;
然后重载虚函数OnCreateClient:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT cs,CCreateContext *pContext)
{
   return m_SplitterWnd.Create(this,2,2,CSize(20,20),pContext);
}
这样就完事大吉了,问题是这样创建出来的分割窗口需要手工去托一些才看得到,我想让它一开始就能显示出来该怎么办?简单调用SetRowInfo好像不行,有谁做过吗?多谢了。

19 个解决方案

#1


see this.
http://www.codeproject.com/splitter/
http://www.codeproject.com/splitter/flatsplitter.asp

#2


多谢,不过不是我要求的:(

现在网上我能查到的例子中,初始化显示时即切分的都是用CreateStatic实现的,我要的是用Create实现初始化即切分的功能。

#3


关注!

#4


SetRowInfo()之后要调用RecalcLayout()

#5


up

#6


mark 一下,回去帮你看看。
================================================================
长恨此身非我有/何时忘却营营/夜阑风静觳纹平/小舟从此逝/江海寄余生
================================================================

#7


To  Mr_Ldh(Mr_Ldh):
我试怎么不行?

#8


我的代码:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
if (!m_wndSplitter.CreateStatic(this, 1, 2,WS_CHILD | WS_VISIBLE))
return FALSE;
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(a, 100), pContext) ||
!m_wndSplitter.CreateView(0, 2, RUNTIME_CLASS(CRightView), CSize(100, 0), pContext)
)
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
return TRUE;
}

改变第0列窗口的宽度:

m_wndSplitter.SetColumnInfo(0,200,200);
m_wndSplitter.RecalcLayout();

#9


各位,我再说一遍,CreateStatic我也知道怎么做,不用再麻烦大家了,我要的是Create。谢谢。

To Mr_Ldh(Mr_Ldh):
m_wndSplitter.SetColumnInfo(0,200,200);
m_wndSplitter.RecalcLayout();
你试过吗?我试怎么不行?

#10


再加100分,诸位帮帮忙!

#11


关注

#12


重载 CFrameWnd 的虚函数,并添加如下代码:
void CMainFrame::ActivateFrame(int nCmdShow)
{
// TODO: Add your specialized code here and/or call the base class
m_wndSplitter.SplitColumn( 100 );
m_wndSplitter.SplitRow(100 );0D
m_wndSplitter.RecalcLayout();0D

CFrameWnd::ActivateFrame(nCmdShow);
}

既可以改变分格条为你所需要的大小。
================================================================
长恨此身非我有/何时忘却营营/夜阑风静觳纹平/小舟从此逝/江海寄余生
================================================================

#13


重载 CFrameWnd 的虚函数,并添加如下代码:
void CMainFrame::ActivateFrame(int nCmdShow)
{
// TODO: Add your specialized code here and/or call the base class
m_wndSplitter.SplitColumn( 100 );
m_wndSplitter.SplitRow(100 );0D
m_wndSplitter.RecalcLayout();0D

CFrameWnd::ActivateFrame(nCmdShow);
}

既可以任意改变分隔条为你所需要的大小。
================================================================
长恨此身非我有/何时忘却营营/夜阑风静觳纹平/小舟从此逝/江海寄余生
================================================================

#14


重载 CFrameWnd 的虚函数,并添加如下代码:
void CMainFrame::ActivateFrame(int nCmdShow)
{
// TODO: Add your specialized code here and/or call the base class
m_wndSplitter.SplitColumn( 100 );
m_wndSplitter.SplitRow(100 );0D
m_wndSplitter.RecalcLayout();0D

CFrameWnd::ActivateFrame(nCmdShow);
}

既可以任意改变分隔条为你所需要的大小。
================================================================
长恨此身非我有/何时忘却营营/夜阑风静觳纹平/小舟从此逝/江海寄余生
================================================================
================================================================
长恨此身非我有/何时忘却营营/夜阑风静觳纹平/小舟从此逝/江海寄余生
================================================================

#15


只会这个了:
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 

#16


就算你会,也不用这么夸张吧?

谢谢:)

#17


关注==190分???

#18


呀,错了!给错了。

#19


我的天???
我怎么那了190分????????????????
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告