WEB开发网
开发学院软件开发VC 实现类似Excel和Visual C++里文件夹式样的标签控制... 阅读

实现类似Excel和Visual C++里文件夹式样的标签控制(二)

 2007-11-01 20:23:07 来源:WEB开发网   
核心提示:从个人的角度来讲,我很怀疑用这样的方法来改进程序的可行性,实现类似Excel和Visual C++里文件夹式样的标签控制(二)(2),因为我觉得将信息显示在一个画面中会更直观,但是,可以省略这个参数并调用CFolderFrame::GetFolderTabCtrl来获得标签控制,然后用CFolderTabCtrl::A

从个人的角度来讲,我很怀疑用这样的方法来改进程序的可行性,因为我觉得将信息显示在一个画面中会更直观。但是,本文的目的是示范,并不指望拿它去获得UI设计的奖项,仅仅是用它来作为例子,示范如何同时实现CFolderCtrlTab标签控制和滚动条控制,仅此而已。

此外,要记住一点,每当你要修改或增强MFC应用程序框架特性时,尽量少的触及MFC框架本身。模仿它而不要去破坏它。以此为原则,我采取的策略是在框架和视图之间插入新窗口。如图五所示:

图五 插入的新框架与主框架的关系

上图说明了基本的框架关系。主框架(或MDI子框架)包含作为子窗口的CFolderFrame,然后CFolderFrame包含水平滚动条和标签控制并管理它们之间的交互。

CFolderFrame的使用很简单,自己要做的事情并不多。首先必须改写主框架的OnCreateClient函数以便创建CFolderFrame表示的窗口。

BOOL CMainFrame::OnCreateClient(...,
   CCreateContext* pcc)
  {
   return m_wndFolderFrame.Create(this,
    RUNTIME_CLASS(CDIBView), pcc,
    IDR_FOLDERTABS);
  }   

因为原来的位图显示程序同时支持SDI和MDI版本。对于MDI的情况,你要在MDI子框架中改写OnCreateClient,而OnCreateClient函数通常是MFC创建视图的地方,如今应该在此创建CFolderFrame子框架。不要调用基类的OnCreateClient!然后,CFolderFrame子框架用运行时类创建一个视图和你要传递的上下文信息。IDR_FOLDERTABS是串资源的ID,用它存储标签名。如果你想指定动态的标签名,可以省略这个参数并调用CFolderFrame::GetFolderTabCtrl来获得标签控制,然后用CFolderTabCtrl::AddItem添加标签页。有关细节请参考上一篇文章和附带的源代码。

上一页  1 2 3 4  下一页

Tags:实现 类似 Excel

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接