c++ - 从 unsigned long (COLORREF) 获取 QColor 而不包括 windows.h

标签 c++ qt mfc

我有一个项目,我需要使用一个需要 COLORREF 的 API 和另一个返回 COLORREF 的 API。 COLORREF 是 MFC,我的项目 Qt 不想使用任何 MFC 代码。 COLORREF 最终不过是 unsigned long,所以我希望有一个解决方案。

所以有2个问题:

  • 从返回 COLORREF 的 API 中获取 unsigned long 并从这个 unsigned long 数创建 QColor。请注意,我不能使用 GetRValue()GetGValue(),因为它们会要求我包含 windows.h
  • 从创建的 QColor(我可以做到),将其转换为合适的无符号长整数,我可以将其发送到需要 COLORREF 的 API。

最佳答案

COLORREF只是组织为0x00bbggrrDWORD,您可以轻松地将其转换为组件并构造QColor

int r = color & 0xff;
int g = (color >> 8) & 0xff;
int b = (color >> 16) & 0xff;
QColor qc(r, g, b);

关于c++ - 从 unsigned long (COLORREF) 获取 QColor 而不包括 windows.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36396659/

相关文章:

c# - 包含 atlbase.h header 时应用程序崩溃

c++ - 如何在启动时隐藏鼠标指针?

c++ - swig 对基类 'std::string' 一无所知,忽略

c++ - 谷歌测试/模拟 Qt 信号

c++ - 在 MFC 应用程序中创建和使用 Dll

c++ - ARM C++ - 如何将 const 成员放入闪存中?

c++ - 将 Objective-C 应用程序移植到 Windows。什么是最好的选择?

c++ - Qt QAction 动态数组连接

c++ - CMFCButton 编译错误

c++ - [MFC]如何禁用combobox中的一个Item?