解析VC++6中的指標 (轉)
摘要:指標,在VC++中是很常見的,這裡我們並不打算去詳細講解在C++中那樣的指標用法(我們會有另外的文章去詳細討論),這裡主要講一下VC++中常見的對指標獲取的方法,包括:工具條、狀態條、和視窗的指標。
獲取工具條的指標
在預設狀態下,有一個預設的工具條AFX_IDW_TOOLBAR,我們可以根據相應的ID去獲取工具條指標,方法如下:
CToolBar* pToolBar=(CToolBar*)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR);
是不是很簡單?
獲取狀態條的指標
在預設狀態下,有一個預設的狀態條AFX_IDW_STATUS_BAR,我們自然也可以根據相應的ID去獲取狀態條指標,方法如下:
CStatar* pToolBar=(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()
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CColorButtonDoc)));
return (CColorButtonDoc*)m_pDocument;
}
這裡實際上是將m_pDocument強制轉換成CColorButtonDoc*,也就是我們想要的。
在類中呼叫文件類、檢視類
這裡我們可以利用GetXXXX()去掉用當前啟用的文件和檢視:
CMyDoc* pDoc=(CMyDoc*)GetActiveDocument();
CMyView* pView=(CMyView*)GetActiveView();
獲得應用指標
這個很簡單,一句話搞定:
CMyApp* pApp=(CMyApp*)AfxGetApp();
獲得主框架指標
在類CWinThread裡面有一個公有的成員變數:CWnd* m_pMainWnd; 它存在的主要目的就是提供我們獲得CWnd指標,我們可以利用它來達到我們的目的:
CMainFrame* pFrame=(CMainFrame*)(AfxGetApp()->m_pMainWnd);
透過滑鼠獲得子視窗指標
這裡我們要用到一個不太常用的函式:ChildWindowFromPoint。他的原型如下:
CWnd* ChildWindowFromPoint(POINT point) const;
CWnd* ChildWindowFromPoint(POINT point,UINT nFlags) const;
這個函式用於確定包含指定點的子視窗,如果指定點在客戶區之外,函式返回NULL;如果指定點在客戶區內,但是不屬於任何一個子視窗,函式返回該CWnd的指標;如果有多個子視窗包含指定點,則返回第一個子視窗的指標。不過,這裡還要注意的是:該函式返回的是一個偽視窗指標,不能將它儲存起來供以後使用。
對於第二個引數nFlags有幾個含義:
CWP_ALL 忽略任何子視窗
CWP_SKIPNIVSIBLE 略不可見子視窗
CWP_SKIPDISABLED 略禁止的子視窗
CWP_SKIPRANSPARENT 略透明子視窗
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998889/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#中的函式指標 (轉)C#函式指標
- 指標 (轉)指標
- 我眼中的指標 (轉)指標
- 指標問題的一點體會(區別 [指向指標的指標] 與 [指標的指標] .) (轉)指標
- C++中的this指標C++指標
- Swift 中的指標使用Swift指標
- CR指標(轉載)指標
- 淺談指標 (轉)指標
- Rust中的函式指標Rust函式指標
- Swift中的值和指標Swift指標
- 詳解Javascript 中的this指標JavaScript指標
- 遊戲分析中的重要指標遊戲指標
- C語言重點——指標篇(一文讓你完全搞懂指標)| 從記憶體理解指標 | 指標完全解析C語言指標記憶體
- Redigo: ScanStruct()匿名指標欄位的解析GoStruct指標
- java中的引用與c中的指標Java指標
- 誰動了我的指標? (轉)指標
- C++指標轉換C++指標
- 人氣指標(轉載)指標
- 隨機指標(轉載)隨機指標
- 改變滑鼠指標 (轉)指標
- SMART POINTER(智慧指標) (轉)指標
- Swift中的指標操作及使用Swift指標
- C++中的指標與引用C++指標
- NULL 指標、零指標、野指標Null指標
- 重貼:MFC類中獲得其它類指標 (轉)指標
- MySQL:Innodb DB_ROLL_PTR指標解析MySql指標
- Js 跟手轉動的羅盤指標JS指標
- 力扣之迴文數(雙指標中的對撞指標公式模板)力扣指標公式
- 布林線指標(轉載)指標
- 寶塔線指標(轉載)指標
- 震盪量指標(轉載)指標
- Guru of the week:#18 迭代指標. (轉)指標
- 函式指標淺談 (轉)函式指標
- 機器學習中的效能度量指標彙總機器學習指標
- JavaScript中this指標指向的徹底理解JavaScript指標
- 野指標 空指標指標
- JAVA中的指標,引用及物件的cloneJava指標物件
- 顯示你個性的滑鼠指標(轉)指標