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

2016-02-19 21:45 27 1 收藏

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的VC自动隐藏停泊窗体实现-轻松实现类MSDN2002界面(二)(续),希望大家看完后能赶快学习起来。

【 tulaoshi.com - 编程语言 】

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

  其主要更新为:

  Bugfixs:

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

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  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 的实现

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  4.增加对MDI 的支持

  仍有待解决的问题:

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

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

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

图二: 多文档框架的自动隐藏窗体

  使用的方法与《轻松实现类MSDN2002界面(二)》中基本一样

  不同在于对于多文档 CMainframe 是从CDMIAutoHideFrame 继承的.

  例子工程中MDI是vc2003 作的,SDI VC6和vc2003都可用另外,如果你想使用静态MFC 连接,需要加一个编译选项STATIC_MFC_LINK ,否则画出的窗体会比较难看。很希望有人能帮助解决尚存的两个问题

来源:https://www.tulaoshi.com/n/20160219/1627060.html

延伸阅读
实现窗体自动隐藏方法有多种,可以使用定时器,不断监视鼠标,当鼠标移动到窗体边缘时,显示窗体,当鼠标离开后隐藏窗体。也可以在鼠标收到WM_NCMOUSEMOVE或 WM_MOUSEMOVE(无边框窗体)时激活窗体,然后在窗体消息WM_ACTIVE中设置显示或隐藏,这种方法在窗体未失去焦点时不会隐藏。 !-- frame contents -- !-- /frame contents -- ...
  腾讯QQ是当前流行的网络聊天工具之一,由于它在应用设计上有很多独特之处,所以也吸引了很多程序员对之进行研究和模仿。在这里,我将利用Delphi对QQ的窗体自动隐藏效果提出自己的实现方法。 一、问题的提出 熟悉QQ使用的朋友都知道,当QQ窗体区域超出屏幕四边时,窗体就会自动“消失”,只留下窗体一边的小部分显...
VC界面的实现 作者:wwei 下载源代码 微软C++开发工具VC++由于其界面友好,实用而被许多软件开发者所模仿,但是直接用MFC来实现VC界面不仅要耗费大量时间,而且在实现类似VC工具条停靠,拉伸算法,菜单项和工具条按钮自定义功能时,由于涉及到很多关于 MFC 本身实现的细节问题很容易使程...
在类VC的界面实现中加入目录树 作者:西京大学●职业学院 井中月_VC 下载源代码 前言 本文是在《轻松类VC界面》的基础上写的,初次写文章,表义不清之处,请谅解!如果书归正传,开始……。 程序运行结果如下图:左边、底下有两个可浮动、可变大小的控制窗口 ,在左边一个Tab...
标签: 电脑入门
好多朋友在使用Windows 7操作系统 ,有些朋友喜欢在上班工程中电脑上挂着QQ。又不愿意被老板发现,淡然老板发现之后肯定,不会善罢甘休。那么我们如何让QQ在Windows7系统中自动隐藏起来呢?微软为了改善用户操作体验,强化了鼠标窗口拖拽操作的功能。如果我们用鼠标将某程序窗口拖拽至桌面左侧或右侧,这个程序窗口就会自动以 50% 的宽度在桌...

经验教程

851

收藏

35
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部