案例6
: 資料儲存與讀取
修改**:
修改文件類:
class cmydoc : public cdocument
protected: // create from serialization only
cmydoc();
declare_dyncreate(cmydoc)
// attributes
public:
crect m_recta[max];
int m_count;
修改文件類的onnewdocument
函式:
bool cmydoc::onnewdocument()
if (!cdocument::onnewdocument())
return false;
m_count = 0;
// todo: add reinitialization code here
// (sdi documents will reuse this document)
return true;
void cmydoc::serialize(carchive& ar)
if(ar.isstoring())
ar <
for(int i=0; iar <
else
ar >> m_count;
for(int i=0; iar >> m_recta[i];
修改檢視類的ondraw
函式:
void cmyview::ondraw(cdc* pdc)
cmydoc* pdoc = getdocument();
assert_valid(pdoc);
// todo: add draw code for native data here
for(int i=0; im_count; i++)
pdc->ellipse(pdoc->m_recta[i]);
void cmyview::onlbuttondown(uint nflags, cpoint point)
// todo: add your message handler code here and/or call default
cmydoc* pdoc = getdocument();
assert_valid(pdoc);
if(pdoc->m_count
int r = rand()%50+10;
crect rect(point.x-r, point.y-r, point.x+r, point.y+r);
pdoc->m_recta[pdoc->m_count] = rect;
pdoc->m_count++;
pdoc->setmodifiedflag(); // 設定修改標誌
invalidaterect(rect, false);
cview::onlbuttondown(nflags, point);
知識點:
1.資料是在document
類中處理的,將要儲存的資料在此類的標頭檔案中宣告(
public
),便於讀取時其他類需要呼叫來還原現場;
2.serialize(carchive &ar):其中
carchive
用序列化的方式來儲存檔案,是
cfile
類的乙個輔助類,
serialize(carchive &ar)
函式具有
carchive
引數ar
的特性,即讀寫物件資料;
3.carchive物件中包括成員函式
isstoring(),
當該函式返回值為
true
,寫入資料,否是讀取資料,使用輸出運算子(
<<
)將物件資料插入到
carchive
物件中或使用輸入運算子(
>>
)提取資料;
4.cmydoc* pdoc = getdocument():獲取document類的指標,便於呼叫document類中定義的變數(修改資料);
5.assert_valid(*)是乙個巨集,如果該指標為空則彈出對話方塊並終止程式執行;
6.pdoc->setmodifiedflag():括號內為true(已修改,可預設)或者
false
(未修改),設定已修改的標誌,可以確定檔案是否修改,可以達到未修改不用儲存的目的。
MFC學習筆記( )
選單響應順序 view類 文件類 框架類 應用程式類 訊息分類 標準訊息 除wm command之外,所有以wm 開頭的訊息。從cwnd派生的類,都可以接收到這類訊息。命令訊息 來自選單 加速鍵或工具欄按鈕的訊息。這類訊息都以wm command呈現。在mfc中,通過選單項的標識 id 來區分不同的...
MFC學習筆記
1.oncreate函式目前來看只執行了一次 2.對於隱藏的this指標,不是類中的函式成員。當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式 也就是說,即使你沒有寫上this指標,編譯器在編譯的時候也是加上this的,它作為非靜態成員函式的隱...
MFC 學習筆記
作業 用單文件檢視完成左鍵使圓圈變小,右鍵使圓圈變大,按住ctrl的同時移動滑鼠使圓圈跟著移動。document處理頁面的資料 view呈現和互動。on wm lbuttonup等滑鼠訊息帶著uint nflags 掩碼 引數,記錄滑鼠訊息的同時的附加資訊 比如ctrl或shift鍵 在initin...