MFC中各種指標的擷取

來源:互聯網
上載者:User

       VC中編程對於剛剛開始學習的同學,最大的障礙和問題就是訊息機制和指標擷取與操作。其實這些內容基本上是每本VC學習工具書上必講的內容,而且通過MSDN很多問題都能解決。一般我們使用的架構是VC提供的Wizard產生的MFC   App   Wizard(exe)架構,無論是多文檔還是單文檔,都存在指標擷取和操作問題。下面這節內容主要是一般的架構,然後再講多線程中的指標使用。使用到的類需要包含響應的標頭檔。首先一般獲得本類(視,文檔,對話方塊都支援)執行個體指標this,用this的目的,主要可以通過類中的函數向其他類或者函數中髮指針,以便於在非本類中操作和使用本類中的 功能。  

目錄:

1)   在View中獲得Doc指標  
  2)   在App中獲得MainFrame指標  
  3)   在View中獲得MainFrame指標  
  4)   獲得View(已建立)指標  
  5)   獲得當前文檔指標  
  6)   獲得狀態列與工具列指標  
  7)   獲得狀態列與工具列變數  
  8)   在Mainframe獲得菜單指標  
  9)   在任何類中獲得應用程式類  
  10)   從文檔類取得視圖類的指標

 

1) 在View中獲得Doc指標  

         CYouSDIDoc   *pDoc=GetDocument();一個視只能有一個文檔。

2)   在App中獲得MainFrame指標  
        CWinApp   中的   m_pMainWnd變數就是MainFrame的指標

        也可以:   CMainFrame   *pMain   =(CMainFrame   *)AfxGetMainWnd();

3)   在View中獲得MainFrame指標  

        CMainFrame   *pMain=(CmaimFrame   *)AfxGetApp()->m_pMainWnd; 

4)   獲得View(已建立)指標  
      CMainFrame   *pMain=(CmaimFrame   *)AfxGetApp()->m_pMainWnd;  
      CyouView   *pView=(CyouView   *)pMain->GetActiveView(); 

5)   獲得當前文檔指標

      CDocument   *   pCurrentDoc   =(CFrameWnd   *)m_pMainWnd->GetActiveDocument();

6)   獲得狀態列與工具列指標

     CStatusBar   *   pStatusBar=(CStatusBar   *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);  
     CToolBar   *   pToolBar=(CtoolBar   *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR);

7)   如果架構中加入工具列和狀態列變數還可以這樣    
    (CMainFrame   *)GetParent()->m_wndToolBar;  
    (CMainFrame   *)GetParent()->m_wndStatusBar; 

8)   在Mainframe獲得菜單指標

     CMenu   *pMenu=m_pMainWnd->GetMenu();

 9) 在任何類中獲得應用程式類  
     用MFC全域函數AfxGetApp()獲得。

10)   從文檔類取得視圖類的指標   
         從文檔獲得視圖類指標目的一般為了控制同一文檔的多個視圖的定位問題,我的體會特別是文文書處理CEditView當產生多個視圖類時,這個功能是非常需要的。    
       CDocument類提供了兩個函數用於視圖類的定位:  
      GetFirstViewPosition()和GetNextView()    
      virtual   POSITION   GetFirstViewPosition()   const;  
      virtual   CView*   GetNextView(POSITION&   rPosition)   const;

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.