当前位置: 首页 > news >正文

在工具提示中使用自绘修改字体

在上一篇文章中,我们学习了如何在应用程序中添加工具提示。在之前的例子代码中,我们通过简单地为创建的工具提示设置了目标字体,这种方法很简单,因为自始至终,我们都只创建了一个工具提示。

但是,如果在应用程序中,我们创建了多个不同字体的工具提示,则这种方法就不会奏效了。这个时候,我们需要一种新的方法,是的,你想的和我一样:自绘。

让我们还是回到之前的例子代码,但是这次,我们将会通过自绘来设置字体,而不是设置一个全局字体。

>> 请移步至 topomel.com 以查看图片 <<

在上面的代码中,我们通过响应工具提示窗口的 NM_CUSTOMDRAW 通知来设置自定义字体。在通知处理代码中,请注意,我们检查了绘制阶段,仅在当绘制阶段为 CDDS_PREPAINT 时,才会调用 SelectFont 来设置我们想要的字体,并返回了一个特定值:CDRF_NEWFONT。这个返回值指示,我们修改了工具提示的字体,系统需要使用我们设置的新字体来显示文本。

这样,我们就可以为每一个工具提示设置你希望使用的字体了,是不是更加具有扩展性呢?

当然,如果我们的应用程序只有一个工具提示,则上面的方法有点”大炮打蚊子”,
但是如果这个工具提示需要在应用程序界面的多个不同位置显示,则可能需要在不同的区域显示不同的字体,那么,今天的技法就派的上用场了。

总结

在 Windows 界面开发中,我们有时候不希望使用系统默认给我们的界面样式,但没关系,我们有自绘这种方法来绘制我们想要的样式,是不是感觉又有希望了呢?

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Using custom-draw in tooltips to adjust the font》

相关文章:

在工具提示中使用自绘修改字体

在上一篇文章中&#xff0c;我们学习了如何在应用程序中添加工具提示。在之前的例子代码中&#xff0c;我们通过简单地为创建的工具提示设置了目标字体&#xff0c;这种方法很简单&#xff0c;因为自始至终&#xff0c;我们都只创建了一个工具提示。 但是&#xff0c;如果在应…...

【Git管理工具】使用Docker部署GitLab服务器

【Git管理工具】使用Docker部署GitLab服务器 一、GitLab介绍1.1 GitLab简介1.2 GitLab特点二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本三、Docker CompseV2版本升级(可选)3.1 创建…...

安装kali虚拟机镜像的坑

1.0 安装虚拟机镜像成功之后&#xff0c;只有光标&#xff0c;没有界面 在VMware上安装kali linux环境时&#xff0c;根据提示操作完成后&#xff0c;开启虚拟机&#xff0c;屏幕黑屏&#xff0c;左上角有一个光标在闪&#xff0c;一直开不了机。 出现问题的原因&#xff0c;…...

【Android】TextView适配文本大小并保证中英文内容均在指定的UI 组件内部

问题 现在有一个需求&#xff0c;在中文环境下textView没有超过底层的组件限制&#xff0c;但是一切换到英文环境就超出了&#xff0c;这个如何解决呢&#xff1f;有啥例子吗&#xff1f; 就像这样子的。 解决 全部代码如下&#xff1a; <?xml version"1.0"…...

【力扣每日一题】2023.8.31 一个图中连通三元组的最小度数

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一个无向图&#xff0c;要我们找出三个节点&#xff0c;这三个节点他们两两相连&#xff0c;这三个节点除了连接到对方的其他线…...

C语言--volatile

volatile 1、介绍 volatile是一个类型修饰符&#xff08;type specifier&#xff09;。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile&#xff0c;基本上会导致这样的结果&#xff1a;要么无法编写多线程程序&#xff0c;要么编译器失去大量优化的机会。 …...

技术深入解析与教程:网络安全技术探秘

第一章&#xff1a;引言 在当今数字化时代&#xff0c;网络安全已经成为了重要议题。随着各种信息和业务在网络上的传输与存储&#xff0c;安全问题也日益突出。本文将带您深入探讨网络安全领域中的关键技术&#xff0c;涵盖渗透测试、漏洞挖掘以及恶意软件分析等方面&#xf…...

Android studio 实现生成二维码和扫描二维码

效果图 build.gradle(:app)添加依赖 dependencies {implementation com.google.zxing:core:3.3.3implementation com.journeyapps:zxing-android-embedded:3.6.0implementation com.google.zxing:javase:3.0.0 }Manifests.xml <uses-permission android:name"android…...

Linux中7种文件类型

Linux中文件类型 Linux中一切皆为文件。 查看文件类型&#xff08;输入以下命令根据第一列的第一个字符可区别文件类型&#xff09; ls -l目录文件 第一个字符为d 类似于Windows文件夹。 链接文件&#xff08;软链接&#xff09; 第一个字符为l 例如Windows的快捷方式&…...

基础算法--快速排序

快速排序 算法原理 1. 取一个元素p(第一个元素&#xff0c;最后一个元素&#xff0c;中间元素&#xff0c;随机 都可以)&#xff0c;使元素p归位。 2. 列表被p分成两部分&#xff0c;左边都比p小&#xff0c;右边都比p大。 3. 递归完成排序。 动态演示 python代码实现 import…...

机器学习的第一节基本概念的相关学习

目录 1.1 决策树的概念 1.2 KNN的概念 1.2.1KNN的基本原理 1.2.2 流程&#xff1a; 1.2.3 优缺点 1.3 深度学习 1.4 梯度下降 损失函数 1.5 特征与特征选择 特征选择的目的 1.6 python中dot函数总结 一维数组的点积&#xff1a; 二维数组&#xff08;矩阵&#xff09;的乘法&am…...

Python 之__name__的用法以及解释

文章目录 介绍代码 介绍 __name__ 是一个在 Python 中特殊的内置变量&#xff0c;用于确定一个 Python 文件是被直接运行还是被导入为模块。 文件作为模板导入&#xff0c;则其 __name__属性值被自动设置为模块名 文件作为程序直接运行&#xff0c;则__name__属性属性值被自动设…...

【FPGA零基础学习之旅#12】三线制数码管驱动(74HC595)串行移位寄存器驱动

&#x1f389;欢迎来到FPGA专栏~三线制数码管驱动 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能指…...

networkX-03-连通度、全局网络效率、局部网络效率、聚类系数计算

文章目录 1.连通度1.1 检查图是否连通1.2 检查有向图是否为强连通1.3 点连通度、边连通度&#xff1a; 2.网络效率2.1全局效率2.2 局部效率2.2.1 查找子图2.2.3 局部效率源码分析 3.聚类系数&#xff08;Clustering Coefficient&#xff09;3.1 聚类系统源码分析 教程仓库地址&…...

【深入解读Redis系列】Redis系列(五):切片集群详解

首发博客地址 https://blog.zysicyj.top/ 系列文章地址[1] 如果 Redis 内存很大怎么办&#xff1f; 假设一台 32G 内存的服务器部署了一个 Redis&#xff0c;内存占用了 25G&#xff0c;会发生什么&#xff1f; 此时最明显的表现是 Redis 的响应变慢&#xff0c;甚至非常慢。 这…...

无涯教程-JavaScript - NORMDIST函数

NORMDIST函数替代Excel 2010中的NORM.DIST函数。 描述 该函数返回指定均值和标准差的正态分布。此功能在统计中有非常广泛的应用,包括假设检验。 语法 NORMDIST(x,mean,standard_dev,cumulative)争论 Argument描述Required/OptionalXThe value for which you want the dis…...

递归应用判断是否循环引用

var data await _IDBInstance.DBOperation.QueryAsync<FormulaReference>(sql);//向上查询引用公式 List<FormulaReference> GetSonNode(long id, List<FormulaReference> nodeList, List<long> path null){if (path null){path new List<long…...

使用nginx-lua配置统一url自动跳转到hadoop-ha集群的active节点

下载安装nginx所用的依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel下载nginx wget http://nginx.org/download/nginx-1.12.2.tar.gz tar -xvf nginx-1.12.2.tar.gz稍后安装nginx 安装lua语言 yum install readline-develcurl -R -O http://w…...

AJAX学习笔记2发送Post请求

AJAX学习笔记1发送Get请求_biubiubiu0706的博客-CSDN博客 继续 AJAX发送POST请求 无参数 测试 改回来 测试 AJAX POST请求 请求体中提交参数 测试 后端打断点 如何用AJAX模拟form表单post请求提交数据呢&#xff1f; 设置请求头必须在open之后,send之前 请求头里的设置好比…...

产品团队的需求分析指南

需求分析是软件开发流程中需求识别与管理的关键环节&#xff0c;需求分析的目的在于确保所有产品需求准确地代表了利益相关者的需求和要求。选择合适的需求分析方式可以帮助我们获取准确的产品需求&#xff0c;从而保证我们所交付的成果与利益相关者预期相符。 一、什么是需求…...

自动化测试框架选型:Selenium vs Cypress深度对比

在快速迭代的软件开发周期中&#xff0c;自动化测试框架的选型直接影响产品质量与交付效率。Selenium与Cypress作为当前主流工具&#xff0c;分别代表了传统与现代化的技术路线。本文将从架构设计、核心特性、适用场景及未来趋势等维度&#xff0c;为测试从业者提供深度对比分析…...

解锁英雄联盟智能游戏辅助:终极效率提升指南

解锁英雄联盟智能游戏辅助&#xff1a;终极效率提升指南 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在快节奏的英雄联盟对战中…...

vim-test 支持的 50+ 测试框架全览:从 JavaScript 到 Rust 的完整支持

vim-test 支持的 50 测试框架全览&#xff1a;从 JavaScript 到 Rust 的完整支持 【免费下载链接】vim-test Run your tests at the speed of thought 项目地址: https://gitcode.com/gh_mirrors/vi/vim-test vim-test 是一款让开发者以思维速度运行测试的 Vim 插件&…...

gte-base-zh中文Embedding工业化:CI/CD流水线实现模型版本灰度发布

gte-base-zh中文Embedding工业化&#xff1a;CI/CD流水线实现模型版本灰度发布 1. 项目背景与价值 在人工智能工程化落地的过程中&#xff0c;模型部署和版本管理一直是技术团队面临的挑战。特别是对于文本嵌入模型如gte-base-zh&#xff0c;如何在生产环境中实现平滑的版本升…...

基于springboot的论坛网站设计与实现.7z(源码+论文+开题报告)

[点击下载链接》》》] 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了论坛网站的开发全过程。通过分析论坛网站管理的不足&#xff0c;创建了一个计算机管理论坛网站的方案。文章介绍了论坛网站的系统分析部分&…...

怎样快速掌握mGBA测试套件:5个专业技巧确保模拟器稳定性

怎样快速掌握mGBA测试套件&#xff1a;5个专业技巧确保模拟器稳定性 【免费下载链接】mgba mGBA Game Boy Advance Emulator 项目地址: https://gitcode.com/gh_mirrors/mg/mgba mGBA作为一款开源的高精度Game Boy Advance模拟器&#xff0c;其测试套件是确保模拟器稳定…...

图像处理中的频域魔法:用傅里叶变换消除噪点与增强细节的3种技巧

图像处理中的频域魔法&#xff1a;用傅里叶变换消除噪点与增强细节的3种技巧 当你在处理一张模糊的医学影像或卫星图片时&#xff0c;是否想过那些隐藏在像素背后的频率秘密&#xff1f;傅里叶变换就像一台精密的频谱分析仪&#xff0c;能将图像从空间域转换到频域&#xff0c…...

STM32G473 IAP实战:基于CAN/USART双通道的BootLoader设计与固件升级全流程解析

1. 为什么需要双通道IAP方案 在工业现场设备维护中&#xff0c;固件升级是个高频刚需。想象一下车间里有上百台设备需要更新程序&#xff0c;如果每台都要拆机接下载器&#xff0c;工程师怕是会当场崩溃。我去年参与的一个AGV调度项目就吃过这个亏&#xff0c;后来我们给STM32…...

GLM-OCR与IDEA开发环境联动:打造智能代码注释与文档生成插件

GLM-OCR与IDEA开发环境联动&#xff1a;打造智能代码注释与文档生成插件 想象一下这个场景&#xff1a;你正在一个技术分享会上&#xff0c;看到屏幕上闪过一段精妙的代码片段&#xff0c;你赶紧用手机拍了下来。回到工位&#xff0c;你不再需要对着照片一个字一个字地敲键盘&…...

玩转西门子S7-1200气力输送仿真系统

气力输送系统管道气力输送系统 &#xff08;21&#xff09;采用西门子S7-1200博图WinCC画面组态&#xff0c;博图V16及以上版本都可以仿真运行&#xff0c;无需硬件。 系统带有手动&#xff0f;自动模式&#xff0c;运行数据动态实时显示&#xff0c;带压力实时曲线显示&#x…...