一、定义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、运行效果: