• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 解析VC++6中的指針

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    摘要:指針,在VC++中是很常見的,這里我們并不打算去詳細講解在C++中那樣的指針用法(我們會有另外的文章去詳細討論),這里主要講一下VC++中常見的對指針獲取的方法,包括:工具條、狀態條、控件和窗口的指針。 獲取工具條的指針 在缺省狀態下,有一個默認
         摘要:指針,在VC++中是很常見的,這里我們并不打算去詳細講解在C++中那樣的指針用法(我們會有另外的文章去詳細討論),這里主要講一下VC++中常見的對指針獲取的方法,包括:工具條、狀態條、控件和窗口的指針。

         獲取工具條的指針
         在缺省狀態下,有一個默認的工具條AFX_IDW_TOOLBAR,我們可以根據相應的ID去獲取工具條指針,方法如下:
         CToolBar* pToolBar=(CToolBar*)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR);
         是不是很簡單?

         獲取狀態條的指針
         在缺省狀態下,有一個默認的狀態條AFX_IDW_STATUS_BAR,我們自然也可以根據相應的ID去獲取狀態條指針,方法如下:
         CStatusBar* 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*,也就是我們想要的。

       在框架類中調用文檔類、視圖類
       這里我們可以利用GetActiveXXXXX()去掉用當前激活的文檔和視圖:
       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             file://不忽略任何子窗口
       CWP_SKIPNIVSIBLE    file://忽略不可見子窗口
       CWP_SKIPDISABLED    file://忽略禁止的子窗口
      CWP_SKIPRANSPARENT  file://忽略透明子窗口

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>