看着一个窗户tooltips
类提示窗口,我看到它绘制了阴影outside提示窗口的实际矩形。
Using SpyXX- 我可以获得工具提示的窗口矩形和类样式:
Rectangle: (440, 229)-(544, 249), 104x20
Restored Rect: (440, 229)-(544, 249), 104x20
Client Rect: (0, 0)-(104, 20), 104x20
你会注意到你看到的阴影是物理上的outside正在绘制的窗口。我怎样才能在窗外画出阴影,同时outside我的窗户?
Note: 阴影不是使用标准绘制的CS_DROPSHADOW班级风格。我已经通过实验证实了这一点,并且还可以看到窗口的类样式SpyXX;它不使用CS_DROPSHADOW
:
Windows Styles: 94000001
WS_POPUP 80000000
WS_VISIBLE 10000000
WS_CLIPSIBLINGS 4000000
TTS_ALWAYSTIP 1
Extended Styles: 00080088
WS_EX_LAYERED 80000
WS_EX_TOOLWIN 80
WS_EX_TOPMOST 8
那么我怎样才能在窗外画画呢?
Note:尝试在桌面 DC 上绘图已经过时了。来自格雷格·谢克特的重定向 GDI、DirectX 和 WPF 应用程序:
在屏幕上绘图和阅读
——呸!
最后,由于我们正在重定向
一个特别危险的话题
练习是写到屏幕上,
通过使用 GetDC(NULL)
并写信给该人,或试图
做异或橡皮筋线等。
写信给以下两个重要原因
屏幕坏了:
很贵...写信给
屏幕本身并不昂贵,但它
几乎总是伴随着
从屏幕上读取,因为一
通常执行读-修改-写操作
写入时进行 XOR 等操作
屏幕。从视频中读出
内存表面非常昂贵,
需要与 DWM 同步,
并停止整个 GPU 管道,如下所示
以及 DWM 应用程序管道。
这是不可预测的...如果你以某种方式
设法进入实际的小学
并写入它,不可能有
可预测你的时间有多长
写入主数据库将保持打开状态
屏幕。因为UCE不知道
关于它,它可能会在
下一帧刷新,否则可能会持续存在
很长一段时间,取决于
还有什么需要更新的
屏幕。 (我们确实不允许直接
不管怎样,写信给主要的人,
正是这个原因......如果你尝试
访问 DirectDraw 主接口,用于
例如,DWM 将关闭,直到
访问应用程序退出)