學到的,
從文件獲得檢視類指標目的一般為了控制同一文件的多個檢視的定位問題,我的體會
特別是文書處理ceditview當產生多個檢視類時,這個功能是非常需要的。
cdocument類提供了兩個函式用於檢視類的定位:
getfirstviewposition()和getnextview()
virtual position getfirstviewposition() const;
virtual cview* getnextview(position& rposition) const;
注意:getnextview()括號中的引數用的是引用方式,因此執行後值可能改變。
getfirstviewposition()用於返回第乙個檢視位置(返回的並非檢視類指標,而是一
個position型別值),getnextview()有兩個功能:返回下乙個檢視類的指標以及用
引用呼叫的方式來改變傳入的position型別引數的值。很明顯,在test程式中,只有
乙個檢視類,因此只需將這兩個函式呼叫一次即可得到ctestview的指標如下(需定
義乙個position結構變數來輔助操作):
ctestview* ptestview;
position pos=getfirstviewposition();
ptestview=getnextview(pos);
這樣,便可到了ctestview類的指標ptestview.執行完幾句後,變數pos=null,因為沒
有下乙個檢視類,自然也沒有下乙個檢視類的position.但是這幾條語句太簡單,不
具有太強的通用性和安全特徵;當象前面說的那樣,當要在多個檢視為中返回某個指
定類的指標時,我們需要遍歷所有檢視類,直到找到指定類為止。判斷乙個類指標指
向的是否某個類的例項時,可用iskindof()成員函式時行檢查,如:
pview->iskindof(runtime_class(ctestview));
即可檢查pview所指是否是ctestview類。
有了以上基礎,我們已經可以從文件類取得任何類的指標。為了方便,我們將其作
為乙個文件類的成員函式,它有乙個引數,表示要獲得哪個類的指標。實現如下:
cview* ctestdoc::getview(cruntimeclass* pclass)
if(!pview->iskindof(pclass)){
afxmessagebox("connt locate the view.\r\n
MFC應用程式執行流程
extern c int winapi twinmain hinstance hinstance,hinstance hprevinstance,lptstr lpcmdline,int ncmdshow 這一下清楚了,mfc中的winmain函式其實什麼也沒做,只是呼叫了乙個函式afxwinmai...
MFC應用程式框架分析
一.sdk應用程式與mfc應用程式執行過程的對比 程式執行都要有入口函式,在之前的 c 教程中都是main函式,而 windows應用程式的入口函式是winmain函式 mfc程式也是從winmain函式開始的 下面雞啄公尺就給出用 windows sdk寫的 helloworld 程式,與mfc應...
MFC應用程式執行流程
cmainframe 框架視窗 ctestview 子視窗 ctestdoc 資料文件 vc 下的mfc應用程式執行流程 然後進入到 twinmain hinstance hinstance hinstance hprevinstance,lpstr lpcmdline int ncmdshow 再...