0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

API技巧集(三)

OBEason 来源:jf_88563726 作者:jf_88563726 2023-05-23 11:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

(一)闪烁程序的标题栏

在某些专业的应用程序中,当程序需要提醒用户或要引起用户的注意时,就不停地闪烁程序的标题栏。要实现这个功能,只需要一个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);


审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    2146

    浏览量

    66199
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    爱回收平台价格查询API接口详解

    ​ 在爱回收平台上,用户经常需要根据品牌ID和项目ID查询相关商品或服务的价格。为此,平台提供了一个简洁高效的API接口,帮助开发者或第方应用实现自动化价格查询。本文将详细介绍这个API的使用方法
    的头像 发表于 11-19 14:57 205次阅读
    爱回收平台价格查询<b class='flag-5'>API</b>接口详解

    教你如何使用API

    一、了解API API(Application Programming Interface)即应用程序编程接口,是一种使不同的应用程序能共享数据和功能的软件工具。API可以通过网络、软件或硬件实现
    的头像 发表于 11-09 17:48 1027次阅读

    淘宝平台获取商品视频 API 接口技术指南

    于数据分析、第方应用集成等场景。以下内容基于淘宝开放平台的官方文档和常见开发实践,确保真实可靠。我将逐步引导您完成整个过程,包括注册、认证、调用 API 和代码示例。 1. 准备工作:注册淘宝开发者账号 在调用 API 前,您
    的头像 发表于 11-07 14:01 258次阅读
    淘宝平台获取商品视频 <b class='flag-5'>API</b> 接口技术指南

    Python调用API教程

    随着互联网技术的发展,API(Application Programming Interface)的应用越来越广泛。API是指一系列预先定义好的接口,用于以标准化的形式、规范的方式、安全高效地完成
    的头像 发表于 11-03 09:15 318次阅读

    教你如何使用API接口获取数据!

    一、了解API API(Application Programming Interface)即应用程序编程接口,是一种使不同的应用程序能共享数据和功能的软件工具。API可以通过网络、软件或硬件实现
    的头像 发表于 11-03 09:14 324次阅读

    闲鱼平台获取商品详情API接口

    ,确保真实可靠。 1. 什么是商品详情API? 商品详情API允许开发者通过HTTP请求获取特定商品的详细信息,如标题、价格、描述、图片链接等。这对于构建价格监控工具、数据分析平台或第方应用非常有用。
    的头像 发表于 10-27 16:01 590次阅读
    闲鱼平台获取商品详情<b class='flag-5'>API</b>接口

    请问什么是API?怎么使用它?

    于多种用途,包括: 数据访问:从数据库或远程服务器检索信息。 功能调用:使用第方应用程序或服务的功能。 设备控制:与硬件或外部设备进行通讯。 API 通常以 RESTful、SOAP、GraphQL 或 gRPC 等协议实现,并且可以提供 HTTP、HTTPS、WebS
    的头像 发表于 10-24 11:37 489次阅读

    RESTful API设计原则: 构建易用、可扩展的API接口

    在当今微服务架构和分布式系统盛行的时代,RESTful API已成为系统间通信的核心桥梁。优秀的API设计不仅能提升开发效率,还能显著降低系统维护成本。本文将深入探讨如何遵循REST
    的头像 发表于 10-20 13:45 301次阅读

    Vue3组合式API最佳实践:从Options API到Composition API

    简介 在Vue.js中,Options API一直是主流的开发方式。不过随着Vue3的推出,Composition API作为一种全新的开发方式引起了广泛关注。本文将从Options API
    的头像 发表于 10-20 13:36 157次阅读

    代购系统 API 介绍

    1. 用户相关 API 用户注册 POST /api/users/register 参数:username, email, password, phone 返回:user_id, token 用户
    的头像 发表于 10-08 09:21 146次阅读

    什么是 API接口?

    一丶API接口的工作原理理解 API接口最简单的方式,是从“请求-响应”模型入手: 1.客户端发起请求:比如在电商网站点击“使用支付宝付款”,此时系统会通过一个 API接口向支付宝服务器发送请求
    的头像 发表于 10-08 08:57 742次阅读

    如何集成第方支付API到电商网站

    ​ 在电商网站中,集成第方支付API是确保交易安全、提升用户体验的关键步骤。本文将逐步指导您完成整个流程,从选择支付提供商到上线后的监控。文章结构清晰,包含代码示例和实用建议,帮助您高效实现支付
    的头像 发表于 07-16 10:35 420次阅读
    如何集成第<b class='flag-5'>三</b>方支付<b class='flag-5'>API</b>到电商网站

    鸿蒙开发API9 到 API12,有哪些不同

    ,可以从一些第方网站中下载 二、Model API9支持Stage模型和FA模型两种,API12已经移除了相关选择,默认就是Stage模型 ​​ 、卡片 卡片也属于毕设中的创新功能
    发表于 06-29 22:47

    如何获取 OpenAI API Key?API 获取与代码调用示例 (详解教程)

    OpenAI API Key 获取与使用详解:从入门到精通 OpenAI 正以其 GPT 和 DALL-E 等先进模型引领全球人工智能创新。其 API 为开发者和企业提供了强大的 AI 能力集成途径
    的头像 发表于 05-04 11:42 1.2w次阅读
    如何获取 OpenAI <b class='flag-5'>API</b> Key?<b class='flag-5'>API</b> 获取与代码调用示例 (详解教程)

    openai api key获取的种方案(有一种可以白嫖到 api key)

    OpenAI API Key 全攻略:官方获取、费用详解与“白嫖”实战 引言: 想要体验 OpenAI 强大的 GPT 模型,却苦于没有 API Key?别担心,本文将为你提供一份详尽
    的头像 发表于 02-24 22:16 1.4w次阅读
    openai <b class='flag-5'>api</b> key获取的<b class='flag-5'>三</b>种方案(有一种可以白嫖到 <b class='flag-5'>api</b> key)