静态切分窗口问题,急求GGMM指点

lahuye 2006-04-25 12:41:53
m_wndSplitter1.CreateStatic(this, 1, 2);
m_wndSplitter1.CreateView(0, 1,
RUNTIME_CLASS(CFormSetupView),
CSize(100,250),pContext);

m_wndSplitter2.CreateStatic(&m_wndSplitter1, 2, 1,
WS_CHILD|WS_VISIBLE,
m_wndSplitter1.IdFromRowCol(0,0));
m_wndSplitter2.CreateView(0, 0,
RUNTIME_CLASS(CSysCADView),
CSize(250,150),
pContext);
m_wndSplitter2.CreateView(1, 0,
RUNTIME_CLASS(CTextView),
CSize(250,100),
pContext);

如上,我想把窗口切分成三个静态的固定的窗格,布局为 "--|" 形状,先切分成两个窗格,其中想在右边的表视图窗口加入一些控件,再将左边窗格切分成上下两个窗格,但是运行结果,总是表窗口占据了整个应用程序窗口,需要用鼠标拖拽才能显示出左边的两个视图窗口.我需要的是运行结果为一个固定的布局,窗口大小不能拖拽,该怎么操作啊?谢谢大家!
...全文
144 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
peipeiguo 2006-04-25
  • 打赏
  • 举报
回复
我给你一个简单的例子,以SDI为例,将窗口切分成这样:
|---------------------------------
| |
| |
|--------------------------------|
| | |
| | |
|--------------------------------|


在MainFrm.h中添加:
public:
CSplitterWnd m_wndHSplitter;
CSplitterWnd m_wndVSplitter;


在MainFrm.cpp中添加:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
m_wndHSplitter.CreateStatic(this, 2, 1);
m_wndHSplitter.CreateView(0, 0, RUNTIME_CLASS(CNetworkSnifferView), CSize(0, 300), pContext);
m_wndVSplitter.CreateStatic(&m_wndHSplitter, 1, 2, WS_CHILD | WS_VISIBLE, m_wndHSplitter.IdFromRowCol(1, 0));
m_wndVSplitter.CreateView(0, 0, RUNTIME_CLASS(TreeView), CSize(265, 0), pContext);
m_wndVSplitter.CreateView(0, 1, RUNTIME_CLASS(FormView), CSize(0, 0), pContext);
return true;
}

其中RUNTIME_CLASS()括号中为你想在分割的某个窗口显示的视图。
lahuye 2006-04-25
  • 打赏
  • 举报
回复
有人再点拨一下吗?

能不能把这三个窗格按比例固定下来.按照楼上两位兄弟的做法所显示出来,如果最大化显示窗口,并不按初始运行时的比例显示,我要把这几个窗格按照一定的显示比例固定下来,最大化或放缩整个窗体都不改变这种比例关系,鼠标不能拖拽,该怎么实现啊?
lahuye 2006-04-25
  • 打赏
  • 举报
回复
谢谢楼上的,但是意思还是相同的啊,只是你的程序显示出了三个初始的窗格,而且我要的是三个比例固定的窗格,鼠标不能再做拖动操作,该怎么做呢?谢谢!
happyness44 2006-04-25
  • 打赏
  • 举报
回复
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
if(!m_wndSplitter1.CreateStatic(this,1,2))
return FALSE;

if(!m_wndSplitter2.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE|
WS_BORDER,m_wndSplitter1.IdFromRowCol(0,0)))
{
TRACE0("FAiled to create nested splitter\n");
return FALSE;
}

if(!m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CMessageView),CSize(100,100),pContext))
{
m_wndSplitter1.DestroyWindow();
m_wndSplitter2.DestroyWindow();
return FALSE;
}

if(!m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CInputView),CSize(100,100),pContext))
{
m_wndSplitter1.DestroyWindow();
m_wndSplitter2.DestroyWindow();
return FALSE;
}

if(!m_wndSplitter1.CreateView(0,1,RUNTIME_CLASS(CChattersVew),CSize(100,100),pContext))
{
m_wndSplitter1.DestroyWindow();
return FALSE;
}

m_wndSplitter1.SetColumnInfo(0,450,50);
m_wndSplitter2.SetRowInfo(0,250,50);

return TRUE;
}


换一下cview类就应该是你要的了

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧