API技巧集(三)

网友投稿 154 2024-01-24

(一)闪烁程序的标题栏 在某些专业的应用程序中,当程序需要提醒用户或要引起用户的注意时,就不停地闪烁程序的标题栏要实现这个功能,只需要一个Timer组件和使用一个API函数--FlashWindow。

使用API函数FlashWindow可以闪烁显示指定窗口,让窗口在活动与非活动的状态之间切换,它有两个参数:hwnd和bInvert,头文件为“winuser.h”其中,参数hwnd为要闪烁的窗口句柄,参数bInvert是一个bool变量,设为true时,程序窗口标题栏从活动切换到非活动状态、或反向切换,当设为false时,窗口标题栏还原为最初的状态。

如果配合一个时间组件(Timer组件),以一定的时间间隔执行语句: FlashWindow( Form1-$#@62;Handle,true); 程序窗口的标题栏就在活动、非活动的状态之间不停地切换。

若把hwnd指定成为应用程序的句柄( Application-$#@62;Handel),将会闪烁程序在任务栏上的标题栏 下面就让我们来做一个闪烁窗口标题栏和任务栏上标题栏的程序 首先,在Form1中添加三个按钮Button1、Button2和Button3,把它们的属性分别为“闪烁窗口标题栏”、“闪烁任务标题栏”和“停止闪烁”,再加入两个时间组件Timer1和Timer2,将两个Timer组件的Enabled属性都设为false,将Interval属性都设为为500(即半秒),改变这个属性的值可以修改闪烁的频率。

然后,双击Timer1,在OnTimer事件中加入: FlashWindow( Form1-$#@62;Handle,true); 双击Timer2,在OnTimer事件中加入: FlashWindow( Application-$#@62;Handel,true);

双击Button1,在Button1的OnClick事件中加入: Timer1-$#@62;Enabled=true; 双击Button2,在Button2的OnClick事件中加入: Timer2-$#@62;Enabled=true;

最后,双击Button3,在Button3的OnClick事件中加入: Timer1-$#@62;Enabled=false; Timer2-$#@62;Enabled=false; FlashWindow( Form1-$#@62;Handle,false);

FlashWindow( Application-$#@62;Handel,false); 这样,一个简单的例子就完成了按F9编译运行程序,你就可闪烁窗口标题栏或是闪烁任务栏上? 题栏了 (二)拖动无标题窗体。

现在的Windows应用程序,大都使用了图形化的界面、不规则窗口技术,使得程序界面更加漂亮了但是,使用界面一般要先把窗体的标题栏去掉(在BCB中,将窗体的BorderStyle属性设为bsNone,就可以把窗体的标题栏去掉),这样就不能使用原来的标题栏了,出现了窗口不能移动的问题。

没有标题栏怎样用鼠标拖动窗体呢?我们可以使用Windows的API函数SendMessage来解决这个问题 首先,新建一个工程,把窗体的BorderStyle属性设为bsNone去掉窗体的标题栏,按F12键切换到代码编辑窗口,在头部加入包含头文件"winuser.h"的代码:

#include $#@60;winuser.h$#@62; 然后,在窗体的 OnMouseDown 事件中加入下面的代码: if(Button == mbLeft)//判断是否按了鼠标左键 {

ReleaseCapture();//释放鼠标操作 SendMessage( Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); } 这样,用鼠标左键点住窗口拖动,就可以实现拖动没有标题的窗口了。

也可以在窗体上添加组件,然后在该组件的 OnMouseDown 事件中加入上面的代码,这样也可以点住这个组件拖动窗口你还可以把SendMessage函数的第一个参数修改为这个组件的句柄,如:往窗体添加一个Button组件,在它的 OnMouseDown 事件中加入上面的代码,其中把SendMessage那行语句改为:。

SendMessage( Button1-$#@62;Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); 这样就可以在程序运行时,用鼠标在窗口的范围内移动Button1了。

(三)隐藏程序在任务栏的图标 使用API函数ShowWindow可以隐藏一个程序在任务栏的图标,它被包含在头文件“winuser.h”里面 1、隐藏任务栏图标的代码就是: ShowWindow( Application-$#@62;Handle, SW_HIDE);。

2、要重新显示的时候就使用: ShowWindow( Application-$#@62;Handle, SW_SHOW); 但是,如果将程序最小化后,在任务栏的图标就会重新出现若要在程序还原最小化后,程序在任务栏的图标重新被隐藏起来,可以在窗体的OnPaint事件中加入隐藏程序在任务栏的图标的代码,这样,程序只有在最小化时任务栏才会出现图标,当程序还原最小化时图标又会重新被隐藏起来。

(四)重启、关闭Windows 当用户修改了Windows里面的一些设置,Windows经常会提问是否要重新启动计算机,当用户点Yes的时候,计算机将会自动重启这个就是API函数ExitWindowsEx的一个典型的应用。

ExitWindowsEx,顾名思义就是退出Windows的函数,它有两个参数,第一个是退出Windows的选项,常用的有:EWX_REBOOT(重新启动计算机),EWX_SHUTDOWN(关闭计算机),EWX_LOGOFF(注销当前用户),第二个参数系统保留没有使用,可设为0。

在自编的程序中(如:注册表修改程序),当用户修改了某项设置需要重新启动计算机的时候,就要使用EWX_REBOOT选项重启计算机如: ExitWindowsEx(EWX_REBOOT,0); 使用WX_SHUTDOWN选项,可以实现关机。

如: ExitWindowsEx(EWX_SHUTDOWN,0); 当需要注销的时候,就使用EWX_LOGOFF选项如: ExitWindowsEx(EWX_LOGOFF,0); 审核编辑黄宇

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:OpenAI官宣把ChatGPT API开放
下一篇:英特尔图形上Vulkan API的实时演示
相关文章

 发表评论

暂时没有评论,来抢沙发吧~