我需要在窗口上绘制一些东西(这不是我的 - 如果重要的话,它是用户定义的。)
我已经设法通过使用GetDC获取设备上下文并正常绘制来绘制窗口,问题是我不知道何时绘制到窗口 - 窗口不断重绘(例如,一个游戏)。 我有一些想法,但到目前为止他们没有好或坏/没有实施。
所以我正在寻找一个好的方法,最好在窗口上显示之前绘制窗口。我更喜欢避免使用SetWindowsHookEx(例如:外部DLL)完成钩子,但这样也可以。
感谢。
答案 0 :(得分:3)
另一种方法可能是避免直接在窗口上绘画,而是创建一个透明的分层窗口,您可以将其放在主窗口的顶部。这样,窗口上的绘图不会干扰主窗口上的绘图,反之亦然。
您可能需要采取某些步骤,鼠标点击将通过您的窗口进入主窗口;例如。使用HTTRANSPARENT处理WM_NCHITTEST并使用WS_EX_TRANSPARENT样式。
答案 1 :(得分:2)
因为在Windows下,窗口需要按需绘制,所以唯一的方法是使用SetWindowsHookEx()
挂钩该窗口的WM_PAINT窗口。
这是一个非常重要的过程,需要您的绘图代码驻留在DLL中(因此DLL可以加载到目标应用程序的地址空间中)。
一般来说,除非你有充分的理由这样做,否则这不是一个好主意。