10

简短版:

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

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

长版:

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

目前,当应用程序启动时,我正在使用GetICMProfile()WCS(Windows 颜色系统)功能获取显示器配置文件。当监视器配置文件更改时,我需要一些通知。

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

当应用程序窗口从一个监视器移动到另一个监视器时,通知的奖励积分。我希望有一个通知,但如果没有,我可能可以通过监视窗口移动来弄清楚。

4

1 回答 1

0

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

这很遗憾,但是HWND当我们从显示设置更改颜色配置文件时,看起来好像没有收到消息,所以WM_ACTIVE部分解决了这个问题(当单击/激活窗口时,我们可以检查颜色配置文件是否有改变)。

于 2018-12-03T21:23:46.723 回答