文件模板類(cdoctemplate)將檢視類(cview)、框架類(cframewnd)和文件類(cdocument)**在一起。文件模板將型別訊息在登錄檔中進行註冊,使得在雙擊文件型別的檔案時,作業系統根據註冊資訊找到執行檔案啟動程序並載入該文件。
1.建立乙個多文件專案,選擇文件/檢視架構支援;
2.在嚮導頁中填寫文件拓展名:md;設定專案型別為「標準mfc」;選擇靜態鏈結庫;在嚮導頁最後一頁,選擇cscrollview作為檢視類;
3.在資源檢視中編輯工具欄資源,新增其id;
4.新增乙個普通類clayer,修改其標頭檔案,使其成為乙個抽象類(=0)。
5.新增clayer的派生類,用於不同形狀的繪製圖層。如crectan。
6.修改所有基類中的虛函式(去掉=0)並新增成員變數,編寫成員函式**。
void crectan::serialize(carchive& ar)
else
}void crectan::onlbuttondown(uint nflags,cpoint point)
void crectan::onmousemove(uint nflags,cpoint point,cdc* pdc)
//如果移動滑鼠的同時,滑鼠左鍵處於按下狀態
pdc->setrop2(r2_not);//兩次取反繪圖就可以擦去不需要的過程影象
pdc->selectstockobject(null_brush);
if (m_rect.right>=
0)
m_rect.right=point.x;
m_rect.bottom=point.y;
pdc->rectangle(m_rect);//繪製圖形
}void crectan::onlbuttonup(uint nflags,cpoint point)
void crectan::ondraw(cdc *pdc)
}
7.修改clayer類的原始檔,新增create函式的**,用於建立不同圖形的類物件。
8.修改cmdview類的標頭檔案,新增成員變數,修改初始化函式;為工具項新增訊息對映函式,用於顯示選擇狀態。
9.在cdoc類中新增管理圖層資訊的成員變數。
10.在cmdview類中新增滑鼠的訊息對映函式;修改ondraw函式;內嵌派生類的函式。
11.在cmddoc類中修改序列化函式,內嵌派生類的序列化函式;新增虛函式deletecontents,用於關閉文件時清理記憶體。
解釋畫橡皮線的原理的博文:
MFC介面開發幫助文件 BCG控制項本地化
bcgcontrolbar business components gallery controlbar 是mfc擴充套件庫,使您可以建立具有完全自定義選項 功能區 可自定義工具欄 選單等 以及一組專業設計的豐富microsoft office和microsoft visual studio的應用程...
MFC介面開發幫助文件 BCG使用者定義的工具
bcgcontrolbar business components gallery controlbar 是mfc擴充套件庫,使您可以建立具有完全自定義選項 功能區 可自定義工具欄 選單等 以及一組專業設計的豐富microsoft office和microsoft visual studio的應用程...
基於Chrome開源提取的介面開發框架開篇
一直希望vc開發者能夠方便的開發出細膩高品質的使用者介面。我喜歡c 選擇的平台是windows,所以大部分時間用vc。我自身不排斥其他技術或者開發語言或者開發工具,都去了解,了解的目的是想吸取好的思想補充vc開發方面的不足。從事介面開發方面的研究有5年了,學過很多,嘗試過很多,失敗過很多,但是沒有氣...