// MFCqf.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "resource.h"
UINT nIdicatiors[]={
ID_SEPARATOR,
ID_INDICATOR_NUM,
ID_INDICATOR_REC
};
//创建VIEW
class CMyView1:public CView{
//定义宏 做动态创建
DECLARE_DYNCREATE(CMyView1)
DECLARE_MESSAGE_MAP()
public:
virtual void OnDraw(CDC*pDC);
public:
//定义了一个消息 但是这个消息只能在当前View激活时 消息才能激活
afx_msg void OnTest();
};
//动态创建的实现
IMPLEMENT_DYNCREATE(CMyView1,CView)
BEGIN_MESSAGE_MAP(CMyView1,CView)
ON_COMMAND(ID_TEST,OnTest)
END_MESSAGE_MAP()
void CMyView1::OnTest(){
AfxMessageBox("Test");
}
void CMyView1::OnDraw(CDC *pDC){
pDC->TextOut(100,100,"View1");
}
//创建HTMLVIEW
class CMyView2:public CHtmlView{
//定义宏 做动态创建
DECLARE_DYNCREATE(CMyView2)
public:
virtual void OnInitialUpdate();
};
//动态创建的实现
IMPLEMENT_DYNCREATE(CMyView2,CHtmlView)
void CMyView2::OnInitialUpdate(){
Navigate2("http://www.baidu.com/");
}
//消息映射
class WqfFrame:public CFrameWnd{
DECLARE_MESSAGE_MAP()
public:
//创建切分窗口 函数重写
virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs,
CCreateContext *pContext);
public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreate);
afx_msg void OnExit();
public:
CToolBar m_wndToolBar;
CStatusBar m_wndStatusBar;
CSplitterWnd m_wndSplitter;
CSplitterWnd m_wndSplitterRight;
};
BEGIN_MESSAGE_MAP(WqfFrame,CFrameWnd)
ON_WM_CREATE()
ON_COMMAND(ID_EXIT,OnExit)
END_MESSAGE_MAP()
//退出
void WqfFrame::OnExit(){
PostQuitMessage(0);
}
//创建窗口执行函数
int WqfFrame::OnCreate(LPCREATESTRUCT lpCreate){
//判断是否执行父类函数
CFrameWnd::OnCreate(lpCreate);
//创建工具栏
m_wndToolBar.CreateEx(this);
m_wndToolBar.LoadToolBar(IDR_MAINFRM);
//设置工具栏可以停靠边缘
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
//设置窗口可以停靠边缘
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
//创建状态栏
m_wndStatusBar.CreateEx(this);
//状态栏设置属性参数
m_wndStatusBar.SetIndicators(nIdicatiors,
sizeof(nIdicatiors)/sizeof(UINT));
ModifyStyleEx(WS_EX_CLIENTEDGE,0);
return 0;
}
BOOL WqfFrame::OnCreateClient(LPCREATESTRUCT lpcs,
CCreateContext *pContext)
{
//静态切分窗口
m_wndSplitter.CreateStatic(this,
1,2);
//创建切分窗口的子窗口
//我们的窗口m_wndSplitter 分成了1行2列 而我们m_wndSplitterRight是嵌套在
//m_wndSplitter.IdFromRowCol(0,1) 就表示了创建窗口放在后面一列里的
//第一个参数表示加载到那个view里m_wndSplitter
//第二三 表示几行几列
m_wndSplitterRight.CreateStatic(&m_wndSplitter,3,1,
WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0,1));
m_wndSplitter.CreateView(0,0,
RUNTIME_CLASS(CMyView1),
CSize(200,200),pContext);
//上面吧m_wndSplitterRight设置为2个窗口 现在定义两个窗口
//这个就想TABLE TR TD合并了 等
m_wndSplitterRight.CreateView(0,0,
RUNTIME_CLASS(CMyView2),
CSize(200,200),pContext);
m_wndSplitterRight.CreateView(1,0,
RUNTIME_CLASS(CMyView2),
CSize(200,200),pContext);
m_wndSplitterRight.CreateView(2,0,
RUNTIME_CLASS(CMyView2),
CSize(200,200),pContext);
CMyView2 *pView2=(CMyView2 *)m_wndSplitterRight.GetPane(1,0);
pView2->Navigate2("D:\\");
return true;
/*SetRowInfo/SetColumnInfo 设置行列的大小信息
//SetActivePane/GetActivePane 设置获取当前激活的pane
//GetPane 获取指定位置的PANE视图窗口指针
//动态切分窗口
//获取CMyView1运行时类信息
CCreateContext context;
context.m_pNewViewClass=
RUNTIME_CLASS(CMyView1);
//创建动态View 第二 第三代表能切多少个参数
m_wndSplitter.Create(this,2,2,CSize(50,50),
&context);
return 1;
*/
}
class WqfApp:public CWinApp{
public:
virtual BOOL InitInstance();
};
WqfApp theApp;
BOOL WqfApp::InitInstance(){
WqfFrame *pWnd=new WqfFrame();
pWnd->LoadFrame(IDR_MAINFRM);
m_pMainWnd=pWnd;
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return 1;
}
源程序连接 http://pan.baidu.com/s/1i3ifAxn