c++ - 如何创建像 WinAmp 这样的自定义皮肤

标签 c++ c user-interface

我想这个问题以前有人问过,但我什至没有找到足够的答案来开始四处寻找。大多数答案是指直接捕获 WM_PAINT 方法并进行自定义渲染,或者使用 onwer 绘制对象。但是,我没有看到有信息的集中位置。开始研究。因此,问题。

我的目标是创建一个非常简单的具有自定义外观的 GUI 程序。我更喜欢 winamp 的自定义外观的方式,可以通过“皮肤”进行自定义。但是,我对使用 GTK+、QT 或 wxWidget 等跨平台库不感兴趣。

我在系统编程方面有一些经验,但在 GUI 方面经验不多。我大部分时间都花在开发控制台应用程序上,而我刚刚开始做一些 QT 开发。如果您能指出正确的方向,我将不胜感激。

PS:我对windows和linux环境都感兴趣。

最佳答案

各位

抱歉回复晚了。我有机会与 winamp 的原始开发人员进行了快速交谈,这是我得到的快速答案:

  1. 使用皮肤:美术师创建皮肤,开发人员渲染皮肤
  2. 对于操作系统 (Windows),winamp 只是一个漂亮的盒子,没有别的。有一个容器窗口,仅此而已
  3. 所有控件(按钮、标签、列表等)均由 winamp 团队自己实现。所有消息和内容都作为相对位置传递给容器窗口。 WinAmp 和 GUI 引擎必须决定一个按钮是否被点击,或者它旁边的标签是否是目标,等等。
  4. 呈现以 XML 创建的艺术家皮肤

我不知道他们是否使用任何库来完成所有这些工作,但我怀疑他们会直接挂接窗口调用,并自己进行自定义渲染。

关于c++ - 如何创建像 WinAmp 这样的自定义皮肤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7747891/

相关文章:

c++ - 从 DLL C++ 发出导入函数。领航2001

c++ - 括号之间的两个字符串在 C++ 中用逗号分隔

c++ - C++中的模板类重载运算符ostream不起作用

c++ - wxSmith 和 Code::Blocks 构建错误

c++ - 阻止 Qt 翻译动态属性

python - PySide-PyQt : How to make set QTableWidget column width as proportion of the available space?

c++ - 在 Boost::Program_Options 中,如何设置 wstring 的默认值?

C 定时器差值返回 0ms

C 动态指针数组分配。为什么我可以访问超出范围的元素?

c - atoi() 练习的问题