- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个使用 SetWindowRgn
的程序在属于另一个进程的窗口中制作透明孔。 (只有当用户明确请求时才会这样做。)
程序必须假定目标窗口可能已经有需要保留的孔,因此在调用 SetWindowRgn
之前,它会调用 GetWindowRgn
获取当前区域,然后将当前区域与新区域组合并调用 SetWindowRgn
:
HRGN rgnOld = CreateRectRgn ( 0, 0, 0, 0 );
int regionType = GetWindowRgn ( hwnd, rgnOld );
这在 XP 中工作正常,但对 GetWindowRgn
的调用在 Vista 中失败。我已经尝试关闭 Aero 并使用 AdjustTokenPrivileges
将线程的权限提升到 SE_DEBUG_NAME
, 但都没有帮助。
GetLastError() 似乎没有为 GetWindowRgn 返回有效值——它在一台机器上返回 0,在另一台机器上返回 5(访问被拒绝)。
任何人都可以告诉我我做错了什么或建议不同的方法吗?
最佳答案
您确定您的窗口有一个区域吗? XP 中的大多数顶级窗口都这样做,只是因为默认主题将它们用于圆角......但这仍然是一个错误的假设,并且一旦你进入 Vista 就很可能不成立。
如果您尚未设置区域,并且调用失败,请使用合理的默认值(窗口矩形),不要让它毁了您的生活。现在,如果 SetWindowRgn()
失败...
关于winapi - 为什么 GetWindowRgn 在 Vista 上失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/144774/
我正在编写一个使用 SetWindowRgn 的程序在属于另一个进程的窗口中制作透明孔。 (只有当用户明确请求时才会这样做。) 程序必须假定目标窗口可能已经有需要保留的孔,因此在调用 SetWindo
我是一名优秀的程序员,十分优秀!