(一)闪烁程序的标题栏
在某些专业的应用程序中,当程序需要提醒用户或要引起用户的注意时,就不停地闪烁程序的标题栏。要实现这个功能,只需要一个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);
科沃斯DEEBOT PRO K1 M1亮相2023 CCE:以机器人智慧,开启商用清洁新篇章
总投资80亿的光芯片测试和高速封装总部基地项目落户湖北
诺基亚8什么时候上市?诺基亚8最新消息:今晚诺基亚8在德国正式发布,诺基亚8能否恢复曾经的曙光?
能承受放大器输出电压出现短路造成过压的电路应用设计
可编程控制器(PLC)
API技巧集(三)
AI算法在FPGA芯片上的创新应用
LoRa与ZigBee有什么区别?LoRa与ZigBee技术全面分析
5G通信基本业务流程中的重要组成部分:调制解调
Valkyrie推穿戴式VR体感装置,支持动作追踪功能
半定制快速芯片ASIC可实现高达9GHz的射频功能
若可获得正确的网络安全解决方案,中小企业愿成为IT服务提供商
SYS5000系列交直流充电桩测试系统检测标准
AMD升级EPYC 3000系列处理器,新增EPYC 3255型号处理器
LED裸机驱动电路图设计及编写汇编代码
YDJ-5KVA/50KV油浸式轻型高压试验变压器
开关柜内部元器件介绍
骏晔科技重磅发布CC2340蓝牙模块
LED显示屏常见故障及排除
2017年人工智能发展预测:设计模式改变将提高用户信任度