色彩管理:监控配置文件更改了Windows的通知?

时间:2014-08-14 01:14:25

标签: windows winapi wcs color-management

简短版本:

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

有谁知道Windows上的等效API会是什么?

长版:

我正在开发一款完全色彩管理的应用。因此,我需要在更改显示器的颜色配置文件或将应用程序窗口移动到其他屏幕时收到通知。在Mac方面,这很简单,我只为我的窗口委托实现– windowDidChangeBackingProperties:方法,每当用户将窗口拖动到另一台监视器或每次更改全局监视器配置文件时,我都会收到通知。简单&简单。在Windows方面,我不知道如何获得这些通知。

目前,当应用启动时,我正在使用GetICMProfile() WCS(Windows Color System)功能获取显示器配置文件。我需要一些关于监视器配置文件更改的通知。

如何在Windows上接收显示器配置文件更改通知?

应用程序窗口从一个监视器移动到另一个监视器时的通知的加值点。我希望有一个通知,但如果没有,我可以通过监视窗口移动来解决它。

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是在某些特定消息(GetICMProfile()WM_SHOWWINDOWWM_ACTIVATE)中使用WM_EXITSIZEMOVE查询颜色配置文件,然后比较配置文件的文件名已更改(如果文件名已更改,则当前配置文件也已更改)。

这很遗憾,但是当我们从显示设置更改颜色配置文件时,HWND似乎没有收到消息,因此WM_ACTIVE部分解决了该问题(当窗口单击/激活,我们可以检查颜色配置文件是否已更改。