mfc中獲取指標的方法
1、獲取應用程式指標
2、獲取主框架指標
或者cmainframe* pmainframe = (cmainframe*)afxgetmainwnd();
3、獲取選單指標
cmenu* pmenu = afxgetmainwnd()->getmenu();
4、獲取工具欄、狀態列指標
主框架中可以直接使用m_wnd*******、m_wndstatusbar
其他:c******** p******* = (c********)afxgetmainwnd()->getdescendantwindow(afx_idw_*******);
cstatusbar* pstatusbar = (cstatusbar*)afxgetmainwnd()->getdescendantwindow(afx_idw_status_bar);
5、獲取控制項指標
先用 getdlgitem() 再轉換,如:
cbutton* pbutton = (cbutton*)getdlgitem(idc_mybutton);
6、獲取文件、檢視指標
sdi:
cmainframe* pmainframe = (cmainframe*)afxgetmainwnd();
cyourdoc* pdoc = (cyourdoc*)pmainframe->getactivedocument();
cyourview* pview = (cyourview*)pmainframe->getactiveview();
mdi:
cmainframe* pmainframe = (cmainframe*)afxgetmainwnd();
cchildframe* pchildframe = (cchildframe*)pmainframe->getactiveframe();
cyourdoc* pdoc = (cyourdoc*)pchildframe->getactivedocument();
cyourview* pview = (cyourview*)pchildframe->getactiveview();
7、文件、檢視
從檢視獲取文件指標:
cyourdoc* pdoc = getdocument();
從文件獲取檢視指標:
利用成員函式 getfirstviewposition() 和 getnextview() 遍歷
virtual position getfirstviewposition() const;
virtual cview* getnextview(position& rposition) const;
sdi:
cyourview* pview;
position pos = getfirstviewposition();
pview = getnextview(pos);
mdi:
定義函式
cview* cyourdoc::getview(cruntimeclass* pclass)
cview* pview;
position pos=getfirstviewposition();
while(pos!=null)
pview=getnextview(pos);
if(!pview->iskindof(pclass))
break;
if(!pview->iskindof(pclass))
afxmessagebox(「connt locate the view.」);
return null;
return pview;
使用如下:
cyourview* pview=(cyourview*)getview(runtime_class(cyourview));
8、文件模版、文件
從文件獲取文件模版指標:
cdoctemplate* getdoctemplate() const;
從文件模版獲取文件指標:
viaual position getfirstdocposition( ) const = 0;
visual cdocument* getnextdoc(position & rpos) const = 0;
9、獲取分割檢視中各個檢視的指標
主框架中定義:csplitterwnd m_wndsplitter;
定義兩個view類:cview1、cview2
框架類中過載:
bool cmainframe::oncreateclient(lpcreatestruct, ccreatecontext* pcontext)
verify(m_splitter.createstatic(this,2,1)); //分割成兩行一列
verify(m_splitter.createview(0,0,runtime_class(cview1),csize(100,100),pcontext));
verify(m_splitter.createview(1,0,runtime_class(cview2),csize(100,100),pcontext));
return true;
獲取分割檢視指標
cview1* pview1 = (cview1*)m_wndsplitter.getpane(0,0);
cview2* pview2 = (cview2*)m_wndsplitter.getpane(1,0);
10、通過滑鼠獲得子視窗指標
cwnd* childwindowfrompoint(point point) const;
cwnd* childwindowfrompoint(point point,uint nflags) const;
用於確定包含指定點的子視窗
如果指定點在客戶區之外,函式返回null;
如果指定點在客戶區內,但是不屬於任何乙個子視窗,函式返回該cwnd的指標;
如果有多個子視窗包含指定點,則返回第乙個子視窗的指標。
還要注意的是,該函式返回的是乙個偽視窗指標,不能將它儲存起來供以後使用。
對於第二個引數nflags有幾個含義:
cwp_all file://不忽略任何子視窗
cwp_skipnivsible file://忽略不可見子視窗
cwp_skipdisabled file://忽略禁止的子視窗
cwp_skipransparent file://忽略透明子視窗
獲取工具條的指標
在預設狀態下,有乙個預設的工具條afx_idw_*******,我們可以根據相應的id去獲取工具條指標,方法如下:
c******** p*******=(c********)afxgetmainwnd()->getdescendantwindow(afx_idw_*******);
MFC中獲取指標
獲取工具條的指標 在預設狀態下,有乙個預設的工具條afx idw 我們可以根據相應的id去獲取工具條指標,方法如下 c p c afxgetmainwnd getdescendantwindow afx idw 是不是很簡單?獲取狀態條的指標 在預設狀態下,有乙個預設的狀態條afx idw stat...
MFC中獲取各種類指標的方法
mfc 中獲取各種類指標的方法 獲得各種檢視指標如下 1 在view 中獲得doc 指標 2 在 中獲得 mainframe 指標 3 在 view 中獲得mainframe 指標 4 獲得 view 已建立 指標 5 獲得當前文件指標 6 獲得狀態列與工具欄指標 7 獲得狀態列與工具欄變數 8 在...
MFC 中獲取各種類指標的方法
獲得各種檢視指標如下 1 在 view 中獲得doc 指標2 在中獲得 mainframe 指標3 在view 中獲得mainframe 指標4 獲得view 已建立 指標 5 獲得當前文件指標 6 獲得狀態列與工具欄指標 7 獲得狀態列與工具欄變數 8 在 mainframe 獲得選單指標 9 在...