一、單文檔分割窗口
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、
其次給
C**View
類添加一個成員變量
public: CButton m_myButton; //這條語句寫在**View.h的類的定義中,要聲明為PUBLIC類型
3、然后創建按鈕實例
m_myButton.Create(_T("
示例按鈕
"), //
按鈕的
caption
屬性,按鈕的顯示
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_ICON, //
按鈕也是一種窗體,同樣有窗體風格,這些常量通過或運算使按鈕達到一定的效果,這些常量的含義可以參考
MSDN
。
CRect(20,320,50,340), //
這個參數指出按鈕在視圖中的位置和按鈕的大小。
this, //
這個指針指向按鈕這個窗體的父窗體
ID_BUTTON); //
這是剛才為按鈕定義的常量,按鈕的控制
ID
然后調用函數
m_MyButton.ShowWindow(SW_HIDE)
這個函數根據參數的樣式顯示按鈕,此時的參數表示隱藏按鈕,如果要顯示按鈕,可以以
SW_SHOW
作為參數,這樣,就是在想用到按鈕的時候調用函數
m_MyButton.ShowWindow(SW_SHOW)
顯示出按鈕。
說明:按鈕在
C**View::OnCreate()
函數中初始化。這個函數是當窗體被創建的時候調用的一個初始化函數。像按鈕這樣的對象在這個時候初始化是比較合適的。
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、聲明函數原型
在
C**View
類的聲明中聲明一個
protected
類型的函數
//{{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("這是一個簡單的消息框"); }