關於獲得mfc視窗其它類指標的方法
學到的,
從文件獲得檢視類指標目的一般為了控制同一文件的多個檢視的定位問題,我的體會
特別是文書處理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類。
有了以上基礎,我們已經可以從文件類取得任何類的指標。為了方便,我們將其作
為乙個文件類的成員函式,它有乙個引數,表示要獲得哪個類的指標。實現如下:
補充:
16)使用分割視窗方法的時候
ctestview1*pview=(ctestview1*)((cmainframe*)afxgetmainwnd())->m_wndsplitter->getpane(0,1);
17)如果視窗非活動
用setactiveview函式,把你要得到的檢視設定為活動檢視
獲得父視窗指標 獲得MFC視窗其它類指標的方法
獲得cmainframe 在cchildframe中可用getparentframe 在其它類中用afxgetmainwnd 獲得cchildframe 在cview中用getparentframe 在cmainframe中用mdigetactive 或getactiveframe 在其它類中用af...
MFC獲得主視窗和父視窗指標
vc 中有關控制代碼和指標及其轉換 1.mfc視窗的控制代碼和指標的轉換 1 一般視窗物件都會有乙個其對應的控制代碼變數,所以我們可以取此物件的m hwnd屬性來得到控制代碼。2 使用getsafehwnd函式取得程式所在視窗類的控制代碼 3 使用fromhandle函式來通過控制代碼得到其想要的指...
MFC 各類間指標的獲得
1 在view中獲得doc指標 3 在view中獲得mainframe指標 4 獲得view 已建立 指標 5 獲得當前文件指標 6 獲得狀態列與工具欄指標 7 獲得狀態列與工具欄變數 8 在mainframe獲得選單指標 9 在任何類中獲得應用程式類 10 從文件類取得檢視類的指標 1 12 從文...