gpt4 book ai didi

c++ - Windows Messaging - 获取非客户区设备上下文的各种方法

转载 作者:行者123 更新时间:2023-11-28 02:17:28 33 4
gpt4 key购买 nike

这个问题是针对所有 Windows 专家的。

我正在研究获取包含窗口非客户区的设备上下文 (DC) 的不同方法(使用 Windows API)

我知道有两种方法:

  1. GetWindowDC() - 返回整个窗口的 DC,包括非客户区。
  2. GetDCEx() - 如果您传递 DCX_WINDOW 标志,您将获得一个带有非客户区的 DC。

有没有其他方法可以获得非客户区的DC?

最佳答案

你让事情变得比实际情况更复杂。确实只有一种方法可以获取设备上下文以呈现窗口的非客户区:GetDCEx .

基本原理很简单:如果您正在渲染窗口的非客户区,您将从 WM_NCPAINT 进行渲染。处理程序。此消息带有更新区域(可能不是矩形),只有 GetDCEx 可以为您设置非矩形裁剪区域。


当然,您可以通过手动调用 SelectClipRgn 来实现相同的目的。在从 GetWindowDC 返回的设备上下文中.但这就像通过在循环中重复添加一个值而不是使用乘法运算符来实现乘法。


由于您正在尝试 Hook 您无法控制的应用程序,因此您可能还需要查找对 GetDC 的调用。和 CreateDC .任何一个都可以为整个屏幕(包括窗口的可见非客户区)返回一个 DC。

关于c++ - Windows Messaging - 获取非客户区设备上下文的各种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33632180/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com