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); // 顯示內容
}
留言列表