制作一个倒计时窗口

简介:   这一次我来讲解一个非常简单的倒计时效果(没太大技术含量,所以最初原文发于我的QQZone中)。它的应用场景是这样的,它是一个“全局”性质的提醒,以一种醒目的方式告知用户某个重要事件即将发生,同时不打断用户的当前操作。

  这一次我来讲解一个非常简单的倒计时效果(没太大技术含量,所以最初原文发于我的QQZone中)。它的应用场景是这样的,它是一个“全局”性质的提醒,以一种醒目的方式告知用户某个重要事件即将发生,同时不打断用户的当前操作。视觉效果是在屏幕的正中间显示一个正在倒数的数字,如下:

    

 

  

  然后我们随便用VC创建一个win32应用程序项目,倒计时的数字实际上是用一个窗口来呈现的,也就是在程序中的一个对话框。因此在资源中插入一个对话框,删除掉对话框上的任何控件,然后设置它的属性为 toolwindow,边框为 none。

 

  我们可以使用 GDI 在窗口上绘制出倒计时的数字,如果像我一样想要追求更漂亮点的显示效果,我使用了自定义的图片,包括两张位图,一个是绘制了0~9所有我们需要的数字的图片,另一个是窗口的背景(边框)。如下图所示(图片有所缩小):

 

  背景:  

  数字:

  

  倒计时窗口需要有以下窗口样式:

   

  WS_EX_TOOLWINDOW: 这个可以在设置窗口属性中打钩设置好。toolwindow的本意通常是指那些可以浮动的工具栏窗口,它们的特点是标题栏比普通窗口要窄,标题栏的标题字体也比普通窗口的标题字体小。最关键的特征是,这种窗口不会在任务栏上显示按钮,也不会出现在Alt-Tab窗口列表中。这正是我们需要这个样式的原因。 

 

  WS_EX_LAYERED: 图层窗口。这样我们就可以指定窗口的透明度和透明色。比如背景位图中的圆角处我们使用洋红填充,这样窗口上具有透明色的地方就不会显示出来。同时可以设置窗口使它们具有半透明效果。

 

  WS_EX_TRANSPARENT: “透明”的窗口。这个透明不是说视觉上,而是在于鼠标事件上透明。也就是说,我们的窗口不希望接收鼠标事件,不希望拥有焦点,因为倒计时窗口仅仅用于显示信息,不希望干扰用户的正常操作(比如他们正在聊天或者编辑文档)。这样,鼠标在窗口上移动或者点击时,消息都将被发送到下面的窗口。

 

  WS_EX_TOPMOST: 顶层窗口。这个简单了,就是永远在最上面的窗口。这个属性我们本质上通过SetWindowPos API 函数设置上去。

 

 

  在原文中我还讲解了很多很基本的东西,比如函数中的 static 的局部变量, QQMUSIC的歌词窗口的实现等。由于这些东西很简单,就不详细陈列了。

以下是其中一条:

 

  假设有一个大矩形 rcBig,一个小矩形 rcSmall,我们把小矩形居中的放在大矩形中央,那么小矩形的左上角坐标(以大矩形的左上角为原点)是多少?答案是:

 

  left = (rcBig.width - rcSmall.widht) /2;

  top = (rcBig.height - rcSmall.height)/2;

  

  这个计算式在界面布局时经常用到。同理,在上面的绘制代码中我们也是用这种方法定位每个数字的左上角坐标的。也是用这个方法去设置窗口在屏幕上居中的。  

  下面我们补充一下源代码的下载连接:

  http://files.cnblogs.com/hoodlum1980/StretchBlt.rar

 

  ========================================

  补充一则:把一个 int 数字 n  格式化成16进制的字符串(前面补零成0位):

 

  例如,输入n=10,要求输出 0x0000000A;

 

  C++:  sprintf( buffer, "0x%08X", n);

  C#:    string s = string.Format( "0x{0:X08}", n);

 

 

目录
相关文章
|
3天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
1天前
|
云安全 人工智能 自然语言处理
阿里云x硅基流动:AI安全护栏助力构建可信模型生态
阿里云AI安全护栏:大模型的“智能过滤系统”。
|
2天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
|
5天前
|
存储 机器学习/深度学习 人工智能
大模型微调技术:LoRA原理与实践
本文深入解析大语言模型微调中的关键技术——低秩自适应(LoRA)。通过分析全参数微调的计算瓶颈,详细阐述LoRA的数学原理、实现机制和优势特点。文章包含完整的PyTorch实现代码、性能对比实验以及实际应用场景,为开发者提供高效微调大模型的实践指南。
555 2
|
3天前
|
Linux 虚拟化 iOS开发
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
793 4
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
kde
|
5天前
|
人工智能 关系型数据库 PostgreSQL
n8n Docker 部署手册
n8n是一款开源工作流自动化平台,支持低代码与可编程模式,集成400+服务节点,原生支持AI与API连接,可自托管部署,助力团队构建安全高效的自动化流程。
kde
374 3
|
4天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
本文介绍RAG(检索增强生成)技术,结合Spring AI与本地及云知识库实现学术分析AI应用,利用阿里云Qwen-Plus模型提升回答准确性与可信度。
264 91
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践