颜色管理:Windows中的显示器配置文件更改通知?

10

简短版:

我正在寻找Windows API中与Cocoa – windowDidChangeBackingProperties: 通知相对应的内容,该通知在NSWindowDelegate协议中被调用,当窗口颜色空间发生变化时(当它被移动到另一个监视器或用户更改监视器配置文件时),该通知会被触发。

有人知道Windows上等价的API是什么吗?

详细版:

我正在开发一款完全支持颜色管理的应用程序。因此,当监视器的颜色配置文件更改或应用程序窗口移动到另一个屏幕时,我需要得到通知。在Mac端,这很容易,我只需为我的窗口代理实现 -windowDidChangeBackingProperties: 方法,就可以在用户将窗口拖到另一个监视器上或全局监视器配置文件更改时收到通知。简单易行。但是,在Windows端,我不知道如何获得这些通知。

目前,我正在使用 GetICMProfile() WCS(Windows Color System)函数获取应用程序启动时的监视器配置文件。我需要一些通知来了解监视器配置文件的更改情况。

在Windows中,如何接收监视器配置文件更改的通知?

如果应用程序窗口从一个显示器移动到另一个显示器,会有额外的奖励积分。我希望存在这样的通知,但如果没有,我可以通过监视窗口移动来解决。

1个回答

1
一种可能的解决方案是在某些特定消息(WM_SHOWWINDOWWM_ACTIVATEWM_EXITSIZEMOVE)中使用GetICMProfile()查询颜色配置文件,然后比较配置文件名称是否已更改(如果文件名已更改,则当前配置文件也已更改)。
很遗憾,看起来当我们从显示设置更改颜色配置文件时,HWND没有接收到消息,因此WM_ACTIVE部分地解决了这个问题(当窗口被点击/激活时,我们可以检查颜色配置文件是否已更改)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接