| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 376 人关注过本帖
标题:MFC窗口分割问题
只看楼主 加入收藏
恶魔_铃铛
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-10-28
结帖率:0
收藏
已结贴  问题点数:10 回复次数:2 
MFC窗口分割问题
以下是我重载的oncreateclient函数,
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
   
    CRect cr;  GetWindowRect(&cr);
if(m_splitter.CreateStatic(this,1,2)==NULL)
        return FALSE;
if(m_splitter2.CreateStatic(&m_splitter,2,1,WS_CHILD|WS_VISIBLE,
        m_splitter.IdFromRowCol(0, 0))==NULL)
        return FALSE;
 m_splitter2.CreateView(0,0,RUNTIME_CLASS(Formview1),CSize(cr.Width()/2, cr.Height()/2),pContext);
 m_splitter2.CreateView(1,0,RUNTIME_CLASS(Formview2),CSize(cr.Width()/2, cr.Height()/2),pContext);
  if(m_splitter1.CreateStatic(&m_splitter,2,1,WS_CHILD|WS_VISIBLE,
        m_splitter.IdFromRowCol(0, 1))==NULL)
        return FALSE;
    m_splitter1.CreateView(0,0,RUNTIME_CLASS(Formview3),CSize(cr.Width()/2, cr.Height()/2),pContext);
   m_splitter1.CreateView(1,0,RUNTIME_CLASS(Formview4),CSize(cr.Width()/2, cr.Height()/2),pContext);
     return TRUE;
}
其中Formview1,2,3,4是我的几个继承CFORMVIEW的对话框类,m_splitter,1,2是CSplitterWnd对象,现在出现的问题是
左边的分割窗格老是靠着最左边如图所示,而且各窗口大小并非如cr.Width()/2, cr.Height()/2设置的这样,求大神解读。。。
附件是结果的截图。。。。
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 分割 return 
2012-12-14 16:26
crystall
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:184
专家分:809
注 册:2012-12-1
收藏
得分:10 
在 return TRUE; 之前加上这个函数SetColumnInfo
2012-12-14 17:27
crystall
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:184
专家分:809
注 册:2012-12-1
收藏
得分:0 
程序代码:
//这是我以前写的,贴上来供你参考参考

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
    // TODO: Add your specialized code here and/or call the base class

    //以下创建的为1行3列

    //创建静态分隔条
    m_Splitter1.CreateStatic(this,1,3);
   
    //创建第1行,第1列的视图
    m_Splitter1.CreateView(0,
                           0,
                         RUNTIME_CLASS(CMyListView),
                         CSize(400, 0),
                         pContext
                         );
   //创建第1行,第3列的视图
    m_Splitter1.CreateView(0,
                           2,
                         RUNTIME_CLASS(CMyListView),
                         CSize(400,0),
                         pContext
                         );

    //然后在第2列中 划分2行
    //再创建一个分隔条
    m_Splitter2.CreateStatic(&m_Splitter1,2,1,WS_CHILD|WS_VISIBLE,
                              m_Splitter1.IdFromRowCol(0,1));

    m_Splitter2.CreateView(0,0,
                           RUNTIME_CLASS(CMyFormView),
                           CSize(0,400),pContext);

    m_Splitter2.CreateView(1,0,
                           RUNTIME_CLASS(CMyTreeView),
                           CSize(0,0),pContext);
                          
    //设置分割条的列最小宽度
    //列将以设置的宽度显示           
    //void SetColumnInfo( int col,       列标识
    //                      int cxIdeal, 列的实际宽度 单位为像素
    //                      int cxMin ); 列的最小宽度 单位为像素

   
    //自己处理了OnCreateClient,不需要再调用 父类的OnCreateClient
    //return CFrameWnd::OnCreateClient(lpcs, pContext);

    m_Splitter1.SetColumnInfo(0, 300, 100);
    m_Splitter1.SetColumnInfo(1, 500, 100);

    return TRUE;

2012-12-14 17:35
快速回复:MFC窗口分割问题
数据加载中...
 
   



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

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