熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> C編程 >> 正文

使用VC6.0實現窗口的任意分割

2022-06-13   來源: C編程 

  使用VC實現窗口的任意分割
 
南京郵政局計算機中心 張中慶

  

  關於CSplitterWnd類
             我們在使用CuteFtp或者NetAnt等工具的時候一般都會被其復雜的界面所吸引在這些界面中窗口被分割為若干的區域真正做到了窗口的任意分割           那麼我們自己如何創建類似的界面也實現窗口的任意的分割呢 ?在VC中這就需要使用到CSplitterWnd類CSplitterWnd看上去像是一種特殊的框架窗口每個窗口都被相同的或者不同的視圖所填充當窗口被切分後用戶可以使用鼠標移動切分條來調整窗口的相對尺寸雖然VC支持從AppWizard中創建分割窗口但是自動加入的分割條總是不能讓我們滿意因此我們還是通過手工增加代碼來熟悉這個類          
             CSplitterWnd的構造函數主要包括下面三個
                 

  BOOL Create(CWnd* pParentWndint nMaxRowsint nMaxColsSIZE sizeMinCCreateContext* pContextDWORD dwStyleUINT nID);

功能描述該函數用來創建動態切分窗口                          參數含義pParentWnd 切分窗口的父框架窗口                          nMaxRowsnMaxCols是創建的最大的列數和行數                           sizeMin是窗格的現實大小                           pContext 大多數情況下傳給父窗口                           nID是字窗口的ID號

  BOOL CreateStatic(CWnd* pParentWndint nRowsint nColsDWORD dwStyleUINT nID)

功能描述用來創建切分窗口                   參數含義同上

  BOOL CreateView (int rowint colCruntimeClass* pViewClassSIZE sizeinitCcreateContext* pContext);

功能描述為靜態切分的窗口的網格填充視圖在將視圖於切分窗口聯系在一起的時候必 須先將切分窗口創建好
                 參數含義同上
                 從CSplitterWnd源程序可以看出不管是使用動態創建Create還是使用靜態創建CreateStatic在函數中都調用了一個保護函數CreateCommon從下面的CreateCommon函數中的關鍵代碼可以看出創建CSplitterWnd的實質是創建了一系列的MDI子窗口          
                                 

  DWORD dwCreateStyle = dwStyle & ~(WS_HSCROLL|WS_VSCROLL);if (afxDatabWin)        dwCreateStyle &= ~WS_BORDER; //create with the same wndclass as MDIFrame (no erase bkgnd) if (!CreateEx( _afxWndMDIFrame NULL dwCreateStyle           pParentWnd>m_hWnd (HMENU)nID NULL))        return FALSE; // create invisible


         創建嵌套分割窗口
                 創建動態分割窗口
                 動態分割窗口使用Create方法下面的代碼將創建x的窗格
                 

  m_wndSplitterCreate(thisCSize()pContext);


                 但是動態創建的分割窗口的窗格數目不能超過x而且對於所有的窗格都必須共享同一個視圖所受的限制也比較多因此我們不將動態創建作為重點我們的主要精力放在靜態分割窗口的創建上          
                 創建靜態分割窗口
         與動態創建相比靜態創建的代碼要簡單許多而且可以最多創建x的窗格不同的窗格我們可以使用CreateView填充不同的視圖          
       在這裡我們將創建CuteFtp的窗口分割CuteFtp的分割情況如下

  

  CCuteFTPView

  CView

  CView


From:http://tw.wingwit.com/Article/program/c/201401/30255.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.