很多年后的同学聚会,酒过三巡,他对当年暗恋的女同学说:你知道为什么以前每次下课我都找你问问题么?大伙哄堂大笑,等着她脸红,她平静的看着他,抿了抿嘴角:你有没有想过,那时候我为什么总在座位上,不出去玩呢。。。

----  网易云热评

一、定义CSplitterWnd类对象

 

二、 在重写CFrameWnd::OnCreateClient虚函数时

1、利用CSplitterWnd::Create函数,创建不规则框架窗口。

 

三、实例

1、创建桌面应用程序,导入头文件

2、添加类,实现动态创建机制

class CMyView :public CView {
DECLARE_DYNCREATE(CMyView)
};
IMPLEMENT_DYNCREATE(CMyView,CView)

3、由于CMyview是抽象类,需重写OnDraw方法

类里声明虚函数

virtual void OnDraw(CDC* pDC);

重写该函数

void CMyView::OnDraw(CDC* pDC) {
pDC->TextOut(100,100,"自己的视图窗口");
}

4、创建框架类

class CMyFrameWnd :public CFrameWnd {
};

5、创建应用程序类

class CMyWinApp :public CWinApp {
public:
virtual BOOL InitInstance();
};
CMyWinApp theApp;
BOOL CMyWinApp::InitInstance()
{
CMyFrameWnd* pFrame = new CMyFrameWnd;
pFrame->Create(NULL, "切割窗口");
m_pMainWnd = pFrame;
pFrame->ShowWindow(SW_SHOW);
pFrame->UpdateData();
return TRUE;
}

6、在框架类定义CSplitterWnd,因为这里生命周期长

public:
CSplitterWnd split1;//日型
CSplitterWnd split2;//倒日型

7、重写CFrameWnd::OnCreateClient虚函数

现在框架类声明函数
virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs,CCreateContext* pContext);
重写函数
BOOL CMyFrameWnd::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
//创建结构体对象
CCreateContext cct;
//拿到CMyview的静态变量
cct.m_pNewViewClass = RUNTIME_CLASS(CMyView);
split1.Create(this, 2,2, CSize(100,100), &cct);
//不用调用父类
return TRUE;
}

8、运行效果:

MFC视图窗口动态分割_动态分割

 

欢迎关注公众号:顺便编点程

MFC视图窗口动态分割_网易云_02