进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 程序开发 -> DLEPHI -> 文章内容  
创建Borland风格的漂浮式窗口

使用过Borland 系列开发工具产品(Delphi, C++Builder, Jbuilder)的朋友一定注意到Borland产品界面风格的特点,即屏弃了MDI(多文档界面),而采用分离的多窗口,特别是主窗口浮动于屏幕的最上方,当最大化时主窗口并不占满整个客户区,而是仍处在屏幕上方,使用户可以有更多的空间使用。那么如何才能实现类似于主窗口这样的效果呢?现在就在此介绍一下用Delphi实现的方法。www.goodsgy.com

要实现上面所说的主窗口的效果,必须要做到三点:1、程序启动时使主窗口位于屏幕的最上方,且宽度充满整个屏幕;2、当用户拖动停靠工具条(Dockable ToolBar/CoolBar)时,窗口能自动调整大小;3、当用户点击最大化按钮时,窗口保持在屏幕最上方,且大小保持不变。www.goodsgy.com

现在假设当前项目的主窗口(frmMain)中含有一个名为cbMainCoolBar(一般主窗口只包含菜单和工具条)。将TfrmMainAutosize属性设为Falsewww.goodsgy.com

具体步骤如下:www.goodsgy.com

1、 为主窗口添加OnCreate事件,代码如下:www.goodsgy.com

procedure TfrmMain.FormCreate(Sender: TObject);www.goodsgy.com

beginwww.goodsgy.com

 Top:=0; //设定主窗口左上角到屏幕左上角www.goodsgy.com

 Left:=0; //www.goodsgy.com

 Width:=Screen.Width; //设定主窗口宽度为屏幕宽度www.goodsgy.com

end;www.goodsgy.com

Screen为系统预定义的类实例,对应与系统桌面,从其中可获取屏幕的一些参数。www.goodsgy.com

 www.goodsgy.com

2、 TfrmMain的定义部分添加私有成员:www.goodsgy.com

privatewww.goodsgy.com

   H:integer ; www.goodsgy.com

为主窗口添加OnResize事件代码如下www.goodsgy.com

procedure TfrmMain.FormResize(Sender: TObject);www.goodsgy.com

beginwww.goodsgy.com

 ClientHeight:=cbMain.Height; //将窗口客户区高度设为CoolBar的高度www.goodsgy.com

 H:=Height;     //将当前的窗口高度保存在变量Hwww.goodsgy.com

end;www.goodsgy.com

 www.goodsgy.com

由于窗口初始化时或点击最大化按钮时都会触发OnResize事件,因此可以保证窗口高度始终正确。www.goodsgy.com

 www.goodsgy.com

3、 这是最关键的一步,我们必须改变Windows默认的最大化例程,来控制最大化后的窗口大小和位置。因此,我们重新映射响应WM_ GETMINMAXINFO的句柄。WM_GETMINMAXINFO消息在lparam中返回一个指向MINMAXINFO结构的指针,MINMAXINFO的结构如下:www.goodsgy.com

tagMINMAXINFO =record  www.goodsgy.com

    ptReserved : TPoint;                //系统保留www.goodsgy.com

    ptMaxSize : TPoint;          //最大化后的大小www.goodsgy.com

    ptMaxPosition : TPoint;                 //最大化后的位置www.goodsgy.com

    ptMinTrackSize : TPoint;          //窗口的最小尺寸www.goodsgy.com

    ptMaxTrackSize : TPoint;          //窗口的最大尺寸www.goodsgy.com

End;www.goodsgy.com

                     MINMAXINFO : tagMINMAXINFO;www.goodsgy.com

 www.goodsgy.com

针对我们的目的,只需要ptMaxSize,ptMaxPosition两个成员就够了。Windows在最大化窗口通过调用这个结构作为参数,来取代默认的最大化参数。www.goodsgy.com

具体操作如下:www.goodsgy.com

TfrmMain的定义部分添加私有成员定义:www.goodsgy.com

   privatewww.goodsgy.com

procedure FormMaximum(var Msg:TMessage);Message WM_GETMINMAXINFO;www.goodsgy.com

以定义WM_GETMINMAXINFO的消息处理句柄。www.goodsgy.com

Implementation部分添加实现代码:www.goodsgy.com

procedure TfrmMain.FormMaximum(var Msg:TMessage);www.goodsgy.com

varwww.goodsgy.com

    lpmmi:^tagMINMAXINFO;www.goodsgy.com

beginwww.goodsgy.com

 lpmmi:=Pointer(Msg.LParam); //获取指向tagMINMAXINFO的指针www.goodsgy.com

 lpmmi^.ptMaxSize:=Point(Screen.width,H); //设定窗口的长宽www.goodsgy.com

 lpmmi^.ptMaxPosition:=Point(0,0); //设定窗口左上角的位置www.goodsgy.com

end;www.goodsgy.com

有一点要注意:lpmmi^.ptMaxSize:=Point(Screen.width,H);一句不能写成lpmmi^.ptMaxSize:=Point(Screen.width,frmMain.Height); 这是由于TformVCL控件,在此消息处理句柄中不可以直接引用Tform中的成员。www.goodsgy.com

到此,大功告成了!其他一些细节,如是否允许用户改变窗口大小,是否可以拖动窗口,都可以通过简单调节而实现,就全看你的需要了。www.goodsgy.com

在百度中搜索:创建Borland风格的漂浮式窗口
在Google中搜索:创建Borland风格的漂浮式窗口
在Yahoo中搜索:创建Borland风格的漂浮式窗口

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]
下一篇文章:装扮工具提示条

 相关文章    最新文章
· 应用无忧 教你创建安全的恢复U盘
· [组图] 在Linux操作系统上创建ADSL拨号上网..
· [图文] 创建密码重设盘 让Vista登录密码还..
· 在Excel中利用VBA创建多级选单
· [图文] Excel有选择性粘贴之创建名称表格
· Office语音识别用户配置文件的创建及使用..
· CSS样式表创建美妙绝伦的网站
· 更改Vista自动创建系统还原点时间间隔
· Excel中创建自定义工具栏 提高工作效率
· [图文] 如何在Vista桌面上创建快捷方式工具..
 
· 小技巧:如何用Delphi创建快捷方式
· Delphi版模仿熊猫烧香病毒核心源码
· Delphi“判断服务器路径”与“清空日志文..
· 应用程序敏感键的实现
· 用Delphi实现远程屏幕抓取
· 用DEPHI为应用软件建立注册机制
· 利用Hook技术实现键盘监控
· Delphi编程实现Ping操作
· 通用Delphi数据库输入控件DBPanel的实现
· 用Delphi开发屏幕保护预览程序

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:goodsgy(#)hotmail.com   (把(#)替换成@)
MSN:goodsgy(#)hotmail.com   (把(#)替换成@)