一、单文档分割窗口
1、用ClassWizard为应用程序添加新的视图类
CLeftView从Cview类派
2、在CMainFrame类里声明分割视图的变量
public: CSplitterWnd m_splMainCols; CSplitterWnd m_splRightRows;
3、在CMainFrame类的OnCreateClient函数中添加代码,创建分割视图
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { if(!m_splMainCols.CreateStatic(this, 1, 3)) { return FALSE; } if(!m_splMainCols.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(100, 0), pContext)) { return FALSE; } /* if(!m_splMainCols.CreateView(0, 1, RUNTIME_CLASS(CLeftView), CSize(500, 0),pContext)) { return FALSE; } */ if(!m_splMainCols.CreateView(0, 2, RUNTIME_CLASS(CLeftView), CSize(0, 0),pContext)) { return FALSE; } if(!m_splRightRows.CreateStatic(&m_splMainCols, 2, 1, WS_CHILD|WS_VISIBLE, m_splMainCols.IdFromRowCol(0,1) )) { return FALSE; } if(!m_splRightRows.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(0, 300), pContext)) { return FALSE; } if(!m_splRightRows.CreateView(1, 0, RUNTIME_CLASS(CLeftView), CSize(0, 0), pContext)) { return FALSE; } //设置水平和垂直分隔条的初始位置
m_splMainCols.SetColumnInfo(0, 100, 0); m_splMainCols.SetColumnInfo(1, 300, 0); m_splRightRows.SetRowInfo(0,150,0); return TRUE; }
4、预览
二、视图中添加控件
1、首先在**View.h中定义一个按钮标识
#define ID_BUTTON 100
2、
public: CButton m_myButton; //这条语句写在**View.h的类的定义中,要声明为PUBLIC类型
3、然后创建按钮实例
int C**View::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; m_MyButton.Create(_T("示例按钮"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_ICON, CRect(20,320,50,340), this, ID_BUTTON); m_MyButton.SetIcon(AfxGetApp()->LoadIcon(ICON_SAVE)); //给按钮加载一个图标 m_MyButton.ShowWindow(SW_HIDE); return 0; }
三、响应控件的事件
1、声明函数原型
//{{AFX_MSG(CSoftView) afx_msg void OnMyButton(); //}}AFX_MSG
2、添加事件对应关系
BEGIN_MESSAGE_MAP(C**View, CView)
END_MESSAGE_MAP()
在这个标记中写入如下代码:ON_BN_CLICKED(ID_BUTTON, OnMybutton)
3、实现OnMyButton()函数
void CLeftView::OnbtnDown() { MessageBox("这是一个简单的消息框"); }