DockPanelSuite2.2工程及类文件介绍

组织: .NET开源分析组织
成员: KingLi(93040487)
时间: 2008年8月31日
开源项目: DockPanelSuite
技术要求:能看懂C# 代码
关键字:VS.NET2005 C# 开源 WinFormsUI WeifenLuo.WinFormsUI.Docking .Net Docking Library Weifen Luo
标题:DockPanelSuite工程及类文件介绍

拜读大作之前,仔细对附带的实例进行了各种操作.发现以下两特点:
1.移动窗体时,出现的圆盘与方格可视化操作很方便,很希望能搞清楚作者是如何实现的. 如图


2.由下图可以看出,如果一个单独的窗体加入到另一个单独的窗时,就会被合成到一起,这点在浮动窗体更明显.而我们设计时只需要拉一个DockPanel控件到窗体作为容器,然后打开继承自DockContent的窗体即可,体现的是两层关系,而下图中可以很明显看出至少有三个级层,即DockPanel与DockContent之间,还有一个类似容器的东西.

带着上面的疑问开始查看工程了.

程序集名称: WeifenLuo.WinFormsUI.Docking

整个工程除授权文件外都放在一个Docking下.

结构大概如下:
Docking
|
|----Helpers 看目录名字就知道是个辅助类了,不过其中的CalculateGraphicsPathFromBitmap()方法可以瞧瞧.

|---Resources 这个是存放资源文件的了.看看其中的图片,尤其是那个圆盘的图片,就更想看作者是如何实现的,我的拿来主义又在作怪了.
|---Win32 这是引用WIN32 API的文件,其中的方法我稍作介绍一下.
DragDetect 捕获并跟踪鼠标的移动直到用户松开左键、按下 Esc 键
PostMessage 将一条消息投递到指定窗口的消息队列
SendMessage调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回
SetWindowsHookEx拦截特定的消息
|--下面的文件实就该类的功能代码了.

工程代码量:
在大家细看工程之前,不妨先看看该工程的代码量有多少.



上图中,列出工程的总代码行:14739行,字数:159000个.


类图分析:
下面对一些重要的类功能作简单介绍.

1).五种功能各异的接口程序,具体的实现要细看代码了.


IAutoHideStripFactory:停靠窗体已设置自动隐藏时的窗体抬头.如图
IDockPaneCaptionFactory: 停靠窗体的抬头.如图
IDockPaneStripFactory:窗体的TAB页抬头.如图

2).对子窗体的停靠类型进行枚举.包括实现该枚举的UI类型转换器

3).这就是每个窗体要继承的对象,这里主要实现继承的子窗体能够拥有拖拉和停靠功能.

4).DockPane是在DockContent与DockPanel之间的一个容器.实现DockContent之间的摆放与DockPane间的调节功能.



5). DockPanel类是最重要的类了.其中DockIndicator与DockOutline是用来实现圆盘与方格轮廓的.

6).下面的类主要是调用WIN API钩子函数的了.



7).这里有继承nativewindow类,实现窗口过程,另外也有获取主窗体的MdiClient.

8).这个DockPanel的持久类.

关键接口列表:
IDragSource
IDockDragSource
ISplitterDragSource

关键类列表:
DockPanel
Dockpane
DockContent
DockWindow
FloatWindow
DragForm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值