是否可以使用 WIN32 API 和 GDI+ (C++) 对工具提示进行样式化

Posted

技术标签:

【中文标题】是否可以使用 WIN32 API 和 GDI+ (C++) 对工具提示进行样式化【英文标题】:Is it possible to stylize a tooltip with WIN32 API and GDI+ (C++) 【发布时间】:2016-05-19 20:18:07 【问题描述】:

我正在写一些代码,我想使用工具提示警告用户错误的动作。使用WIN32可以达到的最大值<commctrl.h> TOOLINFO 结构是单行上的经典矩形工具提示。我想要达到的结果是这样的:

有没有办法使用 GDI+ 和 WIN32 API 来做到这一点?

提前致谢!

【问题讨论】:

对于它的价值,我不认为这是一个工具提示,而是一个自定义控件(或只是游戏板中的一个自定义元素)以特定方式格式化。 uxtheme API 可以为您提供系统主题外观以及字体和颜色。 【参考方案1】:

要将您的工具提示文本拆分为多行,请向控件发送TTM_SETMAXTIPWIDTH 消息以为其提供最大宽度。然后它将自动换行,或者您可以使用\r\n 手动插入换行符。这里有详细描述:How to Implement Multiple Line Tooltips。

使用TTM_SETTITLE 消息为您的工具提示提供标题和图标。

【讨论】:

这是一个很好的提示,但我仍然无法自定义我的工具提示字体颜色或使用其中的图像。你认为我必须放弃给它一种风格的尝试吗? 你没有在你的问题中问这个问题,但是没有 - 工具提示控件本身不能这样做。您必须使用自定义绘图。

以上是关于是否可以使用 WIN32 API 和 GDI+ (C++) 对工具提示进行样式化的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Win32/GDI 加载 PNG 图像(如果可能,不要使用 GDI+)?

Win32:是不是有使用硬件加速的替代 GDI32.dll?

GDI+ DrawImage 在 C++ (Win32) 中比在 C# (WinForms) 中慢得多

api 文本字符输出 (转)

win32day07-图形绘制/GDI绘图对象-画笔/画刷

基于GDI显示png图像