简短版:
我正在寻找与 Cocoa 等价的 Windows API – windowDidChangeBackingProperties:
NSWindowDelegate
中的通知当窗口的色彩空间发生变化时调用的协议(protocol)(当它被移动到另一个显示器或当用户更改显示器配置文件时)。
有谁知道 Windows 上的等效 API 是什么?
长版:
我正在开发一个完全颜色管理的应用程序。因此,当显示器的颜色配置文件更改或应用程序窗口移动到不同的屏幕时,我需要得到通知。在 Mac 端这很简单,我只是实现了 – windowDidChangeBackingProperties:
我的窗口委托(delegate)的方法,每当用户将窗口拖到另一个监视器或更改全局监视器配置文件时,我都会收到通知。简单易行。在 Windows 端,我不知道如何获取这些通知。
目前我正在使用 GetICMProfile()
获取监视器配置文件WCS ( Windows Color System ) 在应用程序启动时起作用。当监视器配置文件更改时,我需要一些通知。
如何在 Windows 上接收监视器配置文件更改通知?
当应用程序窗口从一台显示器移动到另一台显示器时,通知会加分。我希望有一个通知,但如果没有,我可能可以通过监 Windows 口移动来弄清楚。
最佳答案
一种可能的解决方案是在某些特定消息(WM_SHOWWINDOW
、WM_ACTIVATE
和 )中使用
) 然后比较配置文件名是否已更改(如果文件名已更改,则当前配置文件也已更改)。GetICMProfile()
查询颜色配置文件WM_EXITSIZEMOVE
这很遗憾,但看起来当我们从显示设置更改颜色配置文件时 HWND
没有收到消息,因此 WM_ACTIVE
部分解决了那个问题(单击/激活窗口时,我们可以检查颜色配置文件是否已更改)。
关于windows - 颜色管理 : Monitor profile changed notification for Windows?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25298607/