解析vc++6中的指標
摘要:指標,在vc++中是很常見的,這裡我們並不打算去詳細講解在c++中那樣的指標用法(我們會有另外的文章去詳細討論),這裡主要講一下vc++中常見的對指標獲取的方法,包括:工具條、狀態條、控制項和視窗的指標。
獲取工具條的指標
在預設狀態下,有乙個預設的工具條afx_idw_*******,我們可以根據相應的id去獲取工具條指標,方法如下:
c******** p*******=(c********)afxgetmainwnd()->getdescendantwindow(afx_idw_*******);
是不是很簡單?
獲取狀態條的指標
在預設狀態下,有乙個預設的狀態條afx_idw_status_bar,我們自然也可以根據相應的id去獲取狀態條指標,方法如下:
cstatusbar* p*******=(cstatusbar*)afxgetmainwnd()->getdescendantwindow(afx_idw_status_bar);
是不是同樣很簡單?
獲取控制項的指標
這裡有兩種方法。
一、呼叫cwnd: : getdlgitem,獲取乙個cwnd*指標呼叫成員函式。例如,我們想獲取cbutton指標,方法如下:
cbutton* pbutton=(cbutton*) getdlgitem (idc_mybutton);
二、可以使用classwizard將控制項和成員變數聯絡起來。在classwizard中簡單地選擇member variables標籤,然後選擇add variable …按鈕。如果在對話資源編輯器中,按下ctrl鍵並雙擊控制項即可轉到add member variable對話。
在文件類中呼叫檢視類指標
我們可以利用文件類的成員函式getfirstview()和getnextview()遍歷檢視。
在檢視類中呼叫文件類
其實,在檢視類中有乙個現成的成員函式供我們使用,那就是:getdocument();利用它我們可以很容易的得到文件類指標,我們先看一下getdocument()函式的實現:
ccolorbuttondoc* ccolorbuttonview::getdocument()
這裡實際上是將m_pdocument強制轉換成ccolorbuttondoc*,也就是我們想要的。
在框架類中呼叫文件類、檢視類
這裡我們可以利用getactive***xx()去掉用當前啟用的文件和檢視:
cmydoc* pdoc=(cmydoc*)getactivedocument();
cmyview* pview=(cmyview*)getactiveview();
獲得應用程式指標
這裡我們要用到乙個不太常用的函式:childwindowfrompoint。他的原型如下:
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://忽略透明子視窗
解析VC 6中的指標
摘要 指標,在vc 中是很常見的,這裡我們並不打算去詳細講解在c 中那樣的指標用法 我們會有另外的文章去詳細討論 這裡主要講一下vc 中常見的對指標獲取的方法,包括 工具條 狀態條 控制項和視窗的指標。獲取工具條的指標 在預設狀態下,有乙個預設的工具條afx idw 我們可以根據相應的id去獲取工具...
vc6 控制項
詳見msdn 為控制項新增乙個控制項型變數然後訪問之 edit idc edit1 m edit1 void ctest1dlg onbutton1 也可以直接使用id訪問 cstring str int i getdlgitemtextw idc edit1,str afxmessagebox s...
VC6中新增訊息對映
今天發現程式未顯示about box,分析發現,是因為程式未處理wm syscommand命令導致 但vc的classview裡好像不能直接處理該訊息 只好手動新增.記錄下方法和需要注意的地方。處理mfc的classview中沒有定義的訊息需要注意三個地方,如wm syscommand訊息,可以接收...