close

1. 創建一MFC專案 -> SDI專案 -> 專案名稱: vddocmnt

2. 類別檢視-> 點選CvddocmntDoc -> 滑鼠右鍵加入變數

            -> (1) 變數名稱: mydata

            -> 變數型別: CString[101]

            -> (2) 變數名稱: pos

            -> 變數型別: int

            -> (3) 變數名稱: maxct

            -> 變數型別: int

其中(2)(3)點會在建構式中初始化

// CvddocmntDoc 建構/解構

CvddocmntDoc::CvddocmntDoc()
: pos(0)
, maxct(0)
{
    // TODO: 在此加入一次建構程式碼

}

3. 類別檢視-> 點選CvddocmntDoc -> 滑鼠右鍵加入函式mySetData

    -> 函式名稱: mySetData

    -> 參數名稱: 加入 (1) CString ss  (2) int addFlg

// 對資料進行修改或追加,並傳回處理之後的行號
// addFlg  0:修改 1:追加
int CvddocmntDoc::mySetData(CString ss, int addFlg)
{
    if (addFlg == 0) {                    // 修改現在行
        mydata[pos] = ss;
    }
    else{                                // 追加最後一行
        if (maxct<100) mydata[++maxct] = ss;
        pos = maxct;
    }

    return pos;
}

4. 同步驟3, 登錄 myGetData

// 將指定行的資料放入ss,然後傳回處理之後的行號
// 利用mode進行行的指定w0:現在行 1:起始 2:最後一行 3:↑ 4↓
int CvddocmntDoc::myGetData(CString* ss, int mode)
{
    switch (mode) {
    case 0:                                        // 現在行
            break;
    case 1: pos = 1;                            // 起始行
            break;
    case 2: pos = maxct; if (pos == 0) pos=1;    // 最後一行
            break;
    case 3: if (pos > 1) --pos;                    // 前1行
            break;
    case 4: if (pos<100 && pos<maxct) ++pos;    // 後1行
            break;
    }
    *ss = mydata[pos];                            // 設定決定的那一行的內容
    return pos;                                    // 傳回處理之後的行號

}

5. 類別檢視-> 點選CvddocmntView, 登錄myDataDisp

// mode 0:現在行 1:起始 2:末尾 3:↑ 4:↓ 5:追加 6:修改
void CvddocmntView::myDataDisp(int mode)
{
    int nn;
    CString ss1, ss2;
    CvddocmntDoc* myDOC = (CvddocmntDoc *)GetDocument();

    if (mode == 6) {
        m_edit2.GetWindowText(ss2);
        nn = myDOC->mySetData(ss2, 0);        // 修改
    
    }
    else if (mode == 5) {
        m_edit2.GetWindowText(ss2);
        nn = myDOC->mySetData(ss2, 1);        // 追加
    }
    else{    //↓註:讓myDataDisp與myGetData的mode一致
        nn = myDOC->myGetData(&ss2, mode);
    }
    if (nn == 0) {                            // 如果是第0行的話
        ss1 = ""; ss2 = "";
    }
    else {
        ss1.Format("%d", nn);
    }
    m_edit1.SetWindowText(ss1);                // 顯示行號
    m_edit2.SetWindowText(ss2);                // 顯示內容
}

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

    天天向上

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