MFC视图窗口动态分割
原创
©著作权归作者所有:来自51CTO博客作者web安全工具库的原创作品,请联系作者获取转载授权,否则将追究法律责任
很多年后的同学聚会,酒过三巡,他对当年暗恋的女同学说:你知道为什么以前每次下课我都找你问问题么?大伙哄堂大笑,等着她脸红,她平静的看着他,抿了抿嘴角:你有没有想过,那时候我为什么总在座位上,不出去玩呢。。。
---- 网易云热评
一、定义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、运行效果:
欢迎关注公众号:顺便编点程