close

1. 新增專案vddocmnt

基底類別選擇 CFormView

資源檢視->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, 按下完成按鈕

18.設定控制項變數IDC_EDIT2

19.變數名稱m_edit2, 按下完成按鈕

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

 

 



 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 me1237guy 的頭像
    me1237guy

    天天向上

    me1237guy 發表在 痞客邦 留言(0) 人氣()