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

自动隐藏停泊窗体在商业的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 的支持

时间: 2024-10-29 02:56:50

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

轻松实现类MSDN 2002界面(2)

前段时间在VC知识库发表了<轻松实现类MSDN2002界面>,仅仅实现了标签页的拖放.停靠.浮动等功能,而上面的图钉按钮也只是一个假的^_^.通过参考codeproject.com/docking/pinnabledock.asp的代码对程序进行了加强.现在已经可以实现自动隐藏了!!!效果图如下.(比较匆忙,程序还有很多不令人满意的地方,有待改进.上周刚接到新任务,不能继续做了,只好请大家来完善了,希望你把修改后的代码发我一份,谢谢) 图一 下面,我将一步步介绍怎样使用 DockPage.Au

实现窗体的自动隐藏显示功能

现在许多程序的窗体都有自动隐藏/显示的功能(比如OICQ). 实现这样的功能其实很简单,原理是:判断鼠标是否移到了屏幕的最左边或最右边,如果移到了则显示窗体,如果鼠标移开了窗体则隐藏窗体.在本程序中,我们将用到GetCursorPos这个API函数是实现这个功能最重要的一步,这个函数的作用就是获取当前鼠标的坐标值,我们可以通过这个值来判断鼠标是否移到了屏幕的最边缘.下面我们就开始吧. 新建一窗体,将Form1更名为AutoHide将vbBorderStyle属性设置为4-Fixed Tool

Delphi下QQ窗体自动隐藏探索

腾讯QQ是当前流行的网络聊天工具之一,由于它在应用设计上有很多独特之处,所以也吸引了很多程序员对之进行研究和模仿.在这里,我将利用Delphi对QQ的窗体自动隐藏效果提出自己的实现方法. 一.问题的提出 熟悉QQ使用的朋友都知道,当QQ窗体区域超出屏幕四边时,窗体就会自动"消失",只留下窗体一边的小部分显露在桌面上.当用鼠标移动到显露部分之上,窗体就会在隐藏位置重新完整显示:但当鼠标离开窗体区域后,窗体便会重新进入隐藏状态. 对隐藏的全过程进行分析,可以得出两点推测:第一,窗体隐藏的处

c#窗体-C#如何自动隐藏窗体,还请多多帮忙。

问题描述 C#如何自动隐藏窗体,还请多多帮忙. 建立了两个窗体,如何实现打开第二个窗体时第一个窗体自动隐藏? 解决方案 frm2.show(); frm1.hide(); 解决方案二: form.showdialog(); this.hide() 解决方案三: http://download.csdn.net/detail/whuizhou/6523419 解决方案四: http://download.csdn.net/detail/whuizhou/6523419 解决方案五: http://

vc#中wmplayer如何实现视频播放完后自动隐藏

问题描述 如题,想做一个中途可选择的动画,利用vc#实现.目前想实现的是在程序开始时载入一小段视频,播放完后隐藏视频 解决方案 解决方案二:播放完毕,close不行吗?解决方案三:引用1楼kid_wang的回复: 播放完毕,close不行吗? 我想求的关键是播放完自动隐藏(close掉播放器当然也行,关键是怎样在执行完播放后自动执行)目前采用了一个蠢办法就是加timer判断当前时长与视频时长,但是效果不好,求达人来给个方法

Delphi实现窗体感知鼠标滑过并自动隐藏与显示窗口的方法_Delphi

本文实例讲述了Delphi实现窗体感知鼠标滑过并自动隐藏与显示窗口的方法.分享给大家供大家参考.具体实现方法如下: const WM_MouseEnter = $B013; WM_MouseLeave = $B014; type TfrmMain = class(TForm) . . Timer1: TTimer; procedure Timer1Timer(Sender: TObject); protected procedure WMMouseEnter(var Msg: TMessage)

解决Windows 7中QQ面板的自动隐藏功能

Windows 7 为了改善用户操作体验,强化了鼠标窗口拖拽操作的功能.如果我们用鼠标将某程序窗口拖拽至桌面左侧或右侧,这个程序窗口就会自动以 50% 的宽度在桌面左侧或右侧显示,方便横向比对:如果将程序窗口拖拽至桌面顶部,则可以实现窗口的自动最大化,再次拖拽又会恢复原始窗口大小,这类似于早期版本Windows 的鼠标双击窗口标题栏.者今天在微软新闻组看到一个问题:QQ 是大家非常熟悉的常用即时通讯软件,其主面板采用了类似 Windows 侧边栏的设计,因此很多人习惯设置 QQ 主面板的自动隐藏

如何在C#中实现窗口的自动隐藏

问题描述 我想用C#编写一个类似于VisualStudio中的解决方案资源管理器那样的窗口,可以实现停靠.自动隐藏等功能,不知道如何实现,望大家多帮忙. 解决方案 解决方案二:看看........解决方案三:黑,虽然没想过,不过先mark一下.解决方案四:up解决方案五:关注解决方案六:有个目前已经编写好了商业软件控件,DotNetBar你可以去搜索一些,有破解版本.解决方案七:参考如下代码:usingSystem.Runtime.InteropServices;publicpartialcla

WPF自动隐藏的消息框的实例代码_C#教程

(鼠标放上去将一直显示,移开动画继续),提供normal和error两种边框. 介绍:传统的确定,取消,OK,CANCAL之类的对话框太繁琐了,由于项目需要而诞生的仿手机式提示对话框.当然传统的对话框项目中也有,这里就不做介绍了. 出场和退场动画做得很简单,就用Blend随便鼓捣了一番,将就用吧. 预览效果如下: 思路其实很简单:将窗体透明化->布局和样式设计->后台传值调用. 准备工作:Microsoft.Expression.Interactions.dll和System.Windows.