哪位大侠对有CDockBar(及其派生类)有研究?

joycenter 2003-05-13 02:59:59
哪位大侠对有CDockBar(及其派生类) 有研究?
调整位置怎么这么难?
有好的例子吗?
或告知设置的经验?
...全文
241 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
joycenter 2003-05-16
  • 打赏
  • 举报
回复
这个资料在哪里找到的?
fangcheng 2003-05-13
  • 打赏
  • 举报
回复
2.12设计自己的控制条
虽然MFC控制条类已经减轻了程序员使用控制条的许多麻烦和头痛,但是它们是已经实
现了的,这就使得有时,如果不依赖一些其他未列出的特点,是不可能修改它们的一些缺省
行为表现的。所以在某些情况下甚至需要重写MFC功能,虽然这种情况不多见。
以下是一些修改和增强控制条功能的方法。
2.12.1重载CControlBar::CalcDynamicLayout()
这也许是增强控制条功能最普通的方法。重载CalcDynamicLayout()函数可以确定控制条
的大小。因为当前MFC并不支持重置对话条大小,所以首先可以自己增加该功能,以向用户
提供一种请求新尺寸的机制。然后将新的尺寸参数返回给CalcDynamicLayout()函数。无法自
动定义像DialogEditor那样具有多个列的工具栏,替代的办法就是在自己的工具栏派生类中重
载CalcDynamicLayout()函数。在这个类中必须对适当的按钮使用TBSTATE_WRAP风格然后
返回合适的尺寸。你甚至可以在基于工具栏所停靠的停靠栏的基础之上重新对齐工具栏。
2.12.2增加WM_SIZEPARENT消息处理器
正如前面所提到的,应用程序中的主窗口的所有子窗口都接收WM_SIZEPARENT窗口消
息,但目前只有CControlBar类具有针对该消息的处理器函数,它允许CControlBar窗口在客户
区划分出一块小区域。因此,对这个过程增加一个非控制条窗口仅仅意味着为自己的窗口类
增加了一个WM_SIZEPARENT消息处理器。然而,既然添加到这一处理过程的其他类型的窗
口可能位于对话条内,而对话条可以自然地获得WM_SIZEPARENT消息处理器,所以程序员
也许从来不会需要自己来创建该处理器。
2.12.3重载CMainFrame::RecalcLayout()
控制条在应用程序主窗口中的布局如何得到控制呢?这可以通过重载
CMainFrame::RecalcLayout()函数或者CChildFrame::RecalcLayout()函数来完成。通过手工进
行布局,可以:
■确定哪个条首先得到分配区域。
■总是在特定的位置放置特定的控制条。
然而MFC已经使这种过程变得不可能,除非重写函数CFrameWnd::RecalcLayout()和
CWnd::RepositionBars()。因为这些函数的功能将来会由微软增强,而这些函数现在又不得不
由程序员自己来实现,所以,如果对重写MFC函数感到棘手,那么大可放心:这都是些内容
不大可能改变的小函数。
如果修改这些函数可以带来很大的好处,那么程序员完全可以通过从MFC的\src目录下拷
贝RecalcLayout()和CWnd::RepositionBars()函数版本来开始这项工作。这些函数包含在
wincore.cpp和winfrm.cpp中,而且它们的内容通俗易懂,这些函数如何修改就留给读者自己
领会了。
2.12.4从CDockBar派生
为了修改并增强自己的停靠栏,需要再次重写MFC函数。但是该函数规模较小,而且在
未来MFC版本中也不可能会改变。停靠栏一般由CFrameWnd的EnableDocking()函数内部的
CDockBar类创建。但是当EnableDocking()函数创建这个类的时候,使用了固定代码名字
CDockBar,这就不可能替换自己的CDockBar派生类。因此,如果真想要建立自己的
CDockBar版本,就需要在CMainFrame内部重新创建EnableDocking()的功能。同样的,也可
以从拷贝MFC的\src目录下winfrm.cpp内的原始代码开始着手这项工作。
这是一本填补“使用向导”类的VisualC++书籍、产品文档以及MFC源代码之间空隙的MFC书籍。本书是了解MFC内幕的向导,提供了关于那些没有文档记录的MFC类、实用函数和数据成员的独一无二并且透彻的信息,介绍了有用的编码技巧,并对MFC各个类之间的协作方式进行了重要的分析。 本书的第一部分包含了核心的MFC图形用户界面类以及支持它们的类,第二部分包含了像OLE这种扩展基本Windows支持的主题。如果做到以下几点,你就可以成为一位透彻理解MFC实现细节的专家:探索MFC文档/视图结构的内幕,从而学习视图同步、打印和打印预览;更深入地了解MFC序列化中那些没有文档记录的方面和一些没有文档记录的类,例如CPreview、CPreviewDC、CMirrorFile以及CDockBar等等;最后理解MFC 和OLE是如何共同运作的,以及OLE控悠扬是如何实现的;积累技巧,学会自己研究和理解MFC源代码。 目录: 前言 致谢 简介 第1章 MFC的概念性总括 面向对象编程的一些背景 面向对象编程术语 通常的对象 对象与C++ 为什么使用OOP 应用程序框架与MFC MFC要点之旅 结语 第2章 基本的Windows支持 MFC与C/SDK 基本的MFC应用程序组件 现在,找到WinMain() 一些其他隐藏的信息 MFC对GDI的支持 结语 第3章 MFC中的消息处理 CCmdTarget和消息映射表 窗口消息 MFC消息映射内幕 MFC如何使用消息映射表 进入消息循环:PreTranslateMessage() 结语 第4章 MFC实用类 简单值类型 MFC的集合类 CFile家族:MFC对文件的访问 CExcephon:提供更好的错误处理 结语 第5章 CObject 使用CObject的代价 CObject的特性 宏的介绍 运行时类的信息 MFC中的持续性 CObject对诊断的支持 CObject的诊断支持内幕 组合在一起 投入使用 是否值得 结语 第6章 MFC对话框和控件类 CDialog:模态MFC对话框和非模态MFC对话框 MFC公用对话框 OLE对话框 属性页(也称带标签的对话框) MFC控件类 结语 第7章 MFC的文档/视图结构 为什么要用文档/视图 其他原因 旧的方法 体系结构 文档/视图结构内幕 文档舰图内幕再览 结语 第8章 高级文档舰图结构内幕 CMirrorFile CView打印 CView对打印预览支持的内幕 CView的派生类:CScrollView CView的另一个派生类:CCtrlView 结语 第9章 MFC的增强型用户界面类 CSplitterWnd:MFC分割窗口 MFC的CControlBar体系结构 CMiniFrameWnd MFC的MRU文件链表实现 结语 第10章 MFC的DLL与线程 理解状态 MFC的DLL MFC线程 结语 下一章 第11章 用MFC实现COM MFC和OLE COM 何为COM类 COM接口 GUID 剖析IUnknown接口 COM对象服务器 拥有多个接口的COM类 MFCCOM类 使用MFC创建CoMath MFCCOM和接口映射宏 使用MFC的CoMath类 完成服务器的设计 MFC对类厂的支持 结语 第12章 统一数据传输和MFC 历史回顾 重要的结构 IDataObject接口 OLE剪贴板 MFC的IDataObjeot类 延迟供应 深入了解MFC的IDataObject类 OLE拖放 结语 第13章 使用MFC实现OLE文档 OLE文档101 MFC对OLE文档的支持 使用MFC实现OLE文档服务器 容器朋艮务器的协调工作 使条目无效 保存容器的文档 装载OLE文档 结语 第14章 MFC与自动化 自动化的历史 自动化的功能 使用MFC实现自动化应用程序 自动化的工作机制 COM接口与自动化 实现自动化的另外一种方法:使用类型信息 MFC与自动化 结语:使用“MFC方式”的结果 第15章OLE控件 VBX及其缺陷 OLE控件 写一个OLE控件 在工程里使用OLE控件 它是如何工作的 MFC和OLE控件的容器 OLE控件的生存周期 OLE连接 OLE控件的事件 MFC如何处理事件 技巧:在一个视图中加入一个事件接收器 OLE控件的属性页 结语 附录A MFC源代码导读 MFC编码技术 探索MFC的工具 MFC源代码指南 愉快的旅途 附录B 本书的示例代码 术语表

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧