【发布时间】:2015-12-01 22:41:55
【问题描述】:
我正在为 Autodesk 3ds Max 编写一个插件,这是一个本地的、仅限 Windows 的应用程序。该插件是用 C++ 编写的,并使用原始的 Win32 API 来构建其用户界面,就像 3ds Max 插件应该做的那样。
我想在插件的 UI 中显示一个 HTML 链接,以便用户从网络下载插件的新版本。 SysLink control 似乎可以胜任。
困难在于:3ds Max 用户界面的颜色是可配置的。我希望我的插件成为一个好公民,所以我需要 SysLink 控件使用与其他静态标签相同的颜色。
不幸的是,现在 SysLink 控件的文本总是以蓝色绘制,这与 3ds Max 的深色主题效果不太好。而且,看起来我不能向 3ds Max 询问它的调色板。
如何让 SysLink 控件使用与其他静态标签相同的颜色?
【问题讨论】:
-
整个 UI 以定制的方式设计。 Windows 用于控制外观的方法无济于事,因为 3ds 正在绘画。我认为这意味着您需要使用 3ds 知道如何设置样式的控件。看起来它无法识别系统链接。切换到 3ds 知道的控件。
-
问题是,虽然按钮和文本编辑控件是自定义 3ds Max 控件,但所有静态标签都是普通的 Windows 控件。令人气愤的是,SysLink 看起来不错并且可以按预期工作,但在使用深色主题时却无法以可读的颜色显示。
-
虽然它们可能是 Windows 控件,但似乎 3ds 正在绘制它们
-
另一方面,也许 LIS_DEFAULTCOLOR 是您需要的。然后你更大的问题是你找不到 3ds 的调色板......他们真的用愚蠢的造型把你卖掉了。
-
在这一点上,如果我能改变 SysLink 的颜色,我会很高兴的。现在父窗口似乎没有收到
WM_CTLCOLORSTATIC事件。
标签: c++ winapi hyperlink native