龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC自动隐藏停泊窗体实现-轻松实现类MSDN2002界面(二)(续)[组图]

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
自动隐藏停泊窗体在商业的MFC图形库中(如Xtreme)已支持得很好,但他们大多都重写了MFC相应的支持代码像Cristi Posea的CSizingControlBar实现VC6界面那样,重用大部分MFC Dock 框架类而实现Vc .N

  自动隐藏停泊窗体在商业的MFC图形库中(如Xtreme)已支持得很好,但他们大多都重写了MFC相应的支持代码像Cristi Posea的CSizingControlBar实现VC6界面那样,重用大部分MFC Dock 框架类而实现Vc .Net界面的免费库很少见(偶没发现:)本实现,准确地说是在Cuick 的《轻松实现类MSDN2002界面(二)》基础上的增强版。

  其主要更新为:

  Bugfixs:

  1.增加定时器 TID_AUTO_HIDE_DELAY 避免出现两个自动隐藏窗口(AHFloatWnds)同时显示的问题.

  2.focus 切换问题(特别是在 自动隐藏窗口(AHFloatwnd) 与 停泊窗体(DockPageBar)之间的切换).

  3.在改变停泊窗体大小时会有的闪烁、颤动.

  4.在改变自动窗体(AHFloatWnd)大小时,尺寸不能超出Mainframe.

  5.static MFC 连接(Release & Debug)的问题(增加STATIC_MFC_LINK 编译选项).

  6.在CDockPageBar::AddPage 函数中检验 pWnd的 style,确保其为 WS_CHILD style,避免由此引发的窗口管理混乱(如把一个WS_POPUP类型的对话框加载到停泊窗).

  Improvements&Newfeatures:

  1.增加自动隐藏窗口( AHFloatWnd) SLIDE_IN/SLIDE_OUT 动画效果(windows API ::AnimateWindow 对于自画窗体好像不行)

  2.增加的新的自动停泊算法,即 精确停泊(as in VC .net), 但是由于停泊窗体的类是从Cristi Posea的CSizingControlBar继承而来, 横向停泊的窗体会优先充满剩余空间的问题依然存在

  3. 重写了 CDockPageBar 类的NcPaint,NcCalClient,OnNcLButtonXXXX,OnNcHitTest 的实现

  把标签和标题栏的重画放到非客户区来做,把原来的绘图效果作了改进

  4.增加对MDI 的支持

  仍有待解决的问题:

  1.横向停泊的窗体会优先充满剩余空间 本文发表于http://bianceng.cn(编程入门网)

  2.如果框架程序中有工具条,且为可停泊的(Dockable),在自动隐藏时行为不是很合理(浮动窗体有可能会将遮住工具条)

 
图一: 多文档框架的停泊窗体

精彩图集

赞助商链接