1. 新增專案vddocmnt
資源檢視->Dialog-> IDD_VDDOCMNT_FORM
拖拉工具相對應元件如下:
2. 根據上圖的人機介面, 接下來規劃Doc & View的程式架構, 如下:
3. 類別檢視 ->CvddocmntDOC -> 滑鼠右鍵選擇 加入 -> 加入變數
4. 類別檢視 ->CvddocmntDOC -> 滑鼠右鍵選擇 移至定義 -> 會自動開啟vddocmntDoc.h
-> 看到上一步驟所新增的變數
public:
CString mydata[101];
5. 同上, 新增變數
int pos;
int maxcnt;
6. 類別檢視 ->CvddocmntDOC -> 滑鼠右鍵選擇 加入 -> 加入函式
宣告2個成員函式: mySetData 和 myGetData
首先, 新增 int mySetData(CString ss, int addFlg)
7. 依序加入CString ss和 int addFlg後, 按下完成按鈕
8. 點選vddocmntDoc.h看到mySetData定義
9. 點選vddocmntDoc.cpp看到mySetData實作
10. 同步驟6新增myGetData函式
11. 檢視類別新增函式 myDataDisp
-> 類別檢視 ->CvddocmntView -> 滑鼠右鍵選擇 加入 -> 加入函式
12. int myGetData(CString *ss, int mode)
13. 依序滑鼠雙擊六個按鈕, 新增六個按鈕的Callback function
14.系統自動新增事件 afx_msg開頭
15.對應六個按鈕的Callback function實作可加入下列函式中
16. 設定控制項變數IDC_EDIT1
17.變數名稱m_edit1, 按下完成按鈕
20. 修改mySetData副程式, 點選類別檢視
點選CvddocmntDoc -> mySetData(CString ss, int addFlg)
mySetData加入下列程式碼:
int CvddocmntDoc::mySetData(CString ss, int addFlg)
{
if(addFlg == 0){
mydata[pos] = ss;
}else{
if(maxcnt<100) mydata[++maxcnt] = ss;
pos = maxcnt;
}
return pos;
}
21.修改myGetData副程式, 點選類別檢視
點選CvddocmntDoc -> int myGetData(CString* ss, int mode)
myGetData加入下列程式碼:
int CvddocmntDoc::myGetData(CString* ss, int mode)
{
switch(mode){
case 0:
break;
case 1:
pos = 1;
break;
case 2:
pos = maxcnt;
if(pos==0) pos = 1;
break;
case 3:
if(pos>1) --pos;
break;
case 4:
if(pos<100 & pos <maxcnt) ++pos;
break;
}
*ss = mydata[pos];
return pos;
}
22. 修改myDataDisp副程式, 點選類別檢視
點選CvddocmntView -> void myDataDisp(int mode)
myDataDisp加入下列程式碼:
void CvddocmntView::myDataDisp(int mode)
{
int nn;
CString ss1, ss2;
CvddocmntDoc* myDoc = (CvddocmntDoc *)GetDocument();
if(mode==6){
m_edit2.GetWindowTextW(ss2);
nn = myDoc->mySetData(ss2, 0); // 修改
}else if(mode == 5){
m_edit2.GetWindowTextW(ss2);
nn = myDoc->mySetData(ss2, 1); // 追加
}else{
nn = myDoc->myGetData( &ss2, mode);
}
if(nn==0){ // 如果是第0行
ss1 = ""; ss2 = "";
}else{
ss1.Format("%d", nn);
}
m_edit1.SetWindowTextW(ss1); // 顯示行號
m_edit2.SetWindowTextW(ss2); // 顯示內容
}
23. 修改專案屬性->字元集: 使用多位元字元集
24. 加入六個按鈕對應動作
void CvddocmntView::OnBnClickedButtonTop()
{
// TODO: 在此加入控制項告知處理常式程式碼
myDataDisp(1);
}
void CvddocmntView::OnBnClickedButtonLast()
{
// TODO: 在此加入控制項告知處理常式程式碼
myDataDisp(2);
}
void CvddocmntView::OnBnClickedButtonUp()
{
// TODO: 在此加入控制項告知處理常式程式碼
myDataDisp(3);
}
void CvddocmntView::OnBnClickedButtonDown()
{
// TODO: 在此加入控制項告知處理常式程式碼
myDataDisp(4);
}
void CvddocmntView::OnBnClickedButtonAdd()
{
// TODO: 在此加入控制項告知處理常式程式碼
myDataDisp(5);
}
void CvddocmntView::OnBnClickedButtonEdit()
{
// TODO: 在此加入控制項告知處理常式程式碼
myDataDisp(6);
}
25.編譯結果如下:
原始程式: vddocmnt
留言列表