使用VC6.0实现窗口的任意分割

 我来答
世纪网络17
2022-10-30 · TA获得超过5946个赞
知道小有建树答主
回答量:2426
采纳率:100%
帮助的人:142万
展开全部

   使用VC 实现窗口的任意分割  南京邮政局计算机中心 张中庆

  

   一 关于CSplitterWnd类              我们在使用CuteFtp或者NetAnt等工具的时候 一般都会被其复杂的界面所吸引 在这些界面中窗口被分割为若干的区域 真正做到了窗口的任意分割           那么我们自己如何创建类似的界面 也实现窗口的任意的分割呢 ?在VC 中这就需要使用到CSplitterWnd类 CSplitterWnd看上去像是一种特殊的框架窗口 每个窗口都被相同的或者不同的视图所填充 当窗口被切分后用户可以使用鼠标移动切分条来调整窗口的相对尺寸 虽然VC 支持从AppWizard中创建分割窗口 但是自动加入的分割条总是不能让我们满意 因此我们还是通过手工增加代码来熟悉这个类                        CSplitterWnd的构造函数主要包括下面三个                  

  BOOL Create(CWnd* pParentWnd int nMaxRows int nMaxCols SIZE sizeMin CCreateContext* pContext DWORD dwStyle UINT nID);

功能描述 该函数用来创建动态切分窗口                          参数含义 pParentWnd 切分窗口的父框架窗口                          nMaxRows nMaxCols是创建的最大的列数和行数                           sizeMin是窗格的现实大小                           pContext 大多数情况下传给父窗口                           nID是字窗口的ID号

  BOOL CreateStatic(CWnd* pParentWnd int nRows int nCols DWORD dwStyle UINT nID)

功能描述 用来创建切分窗口                   参数含义同上

  BOOL CreateView (int row int col CruntimeClass* pViewClass SIZE sizeinit CcreateContext* pContext);

功能描述 为静态切分的窗口的网格填充视图 在将视图于切分窗口联系在一起的时候必 须先将切分窗口创建好                  参数含义 同上                  从CSplitterWnd源程序可以看出不管是使用动态创建Create还是使用静态创建CreateStatic 在函数中都调用了一个保护函数CreateCommon 从下面的CreateCommon函数中的关键代码可以看出创建CSplitterWnd的实质是创建了一系列的MDI子窗口                                            

  DWORD dwCreateStyle = dwStyle & ~(WS_HSCROLL|WS_VSCROLL);if (afxData bWin )        dwCreateStyle &= ~WS_BORDER; //create with the same wnd class as MDI Frame (no erase bkgnd) if (!CreateEx( _afxWndMDIFrame NULL dwCreateStyle           pParentWnd >m_hWnd (HMENU)nID NULL))        return FALSE; // create invisible

          二 创建嵌套分割窗口                   创建动态分割窗口                  动态分割窗口使用Create方法 下面的代码将创建 x 的窗格                  

  m_wndSplitter Create(this CSize( ) pContext);

                 但是动态创建的分割窗口的窗格数目不能超过 x 而且对于所有的窗格 都必须共享同一个视图 所受的限制也比较多 因此我们不将动态创建作为重点 我们的主要精力放在静态分割窗口的创建上                             创建静态分割窗口          与动态创建相比 静态创建的代码要简单许多 而且可以最多创建 x 的窗格 不同的窗格我们可以使用CreateView填充不同的视图                  在这里我们将创建CuteFtp的窗口分割 CuteFtp的分割情况如下

  

  CCuteFTPView

  CView

  CView

lishixinzhi/Article/program/c/201401/30255

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式