加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

MFC分割窗口的实现

(2012-07-11 14:38:37)
标签:

c

mfc

分割窗口

it

分类: Win32/MFC
新建一个单文档的MFC工程。
新建两个对话框,用于分割窗口,对话框的Style属性改为Child,Border属性改为None,最开始没有改这个,程序运行的时候报错了。
将两个对话框生成从CFormView派生的类。
在CMainFrame中添加两个成员变量,类型为CSplitterWnd,如下所示
CSplitterWnd m_splitterWnd1;// IDD_DLG_1
CSplitterWnd m_splitterWnd2;// IDD_DLG_2

添加虚函数virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);


程序代码修改部分如下:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
//创建一个静态分栏窗口,分为一行二列 
    if(m_splitterWnd1.CreateStatic(this,1,2)==NULL) 
        return FALSE; 

    //将CCSplitterWndView连接到0行0列窗格上
    m_splitterWnd1.CreateView(0,0,RUNTIME_CLASS(CsplitterwndView),CSize(600,500), pContext); 

    if(m_splitterWnd2.CreateStatic(&m_splitterWnd1,2,1,WS_CHILD|WS_VISIBLE, 
        m_splitterWnd1.IdFromRowCol(0, 1))==NULL) 
        return FALSE; //将第0行1列再分开2行1列 
    //将FormView1类连接到第二个分栏对象的0行0列
    m_splitterWnd2.CreateView(0,0,RUNTIME_CLASS(CForm1),CSize(200,300),pContext); 
    //将FormView2类连接到第二个分栏对象的1行0列
    m_splitterWnd2.CreateView(1,0,RUNTIME_CLASS(CForm2),CSize(200,200),pContext); 
    return TRUE; 
}

运行效果图如下(建立工程时采用的是office2007的风格):

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有