如何防止自绘的虚框被其他窗口覆盖
HDC hWindowDC = GetWindowDC( NULL );
void DrawDragRect( HDC DC, int X, int Y, int Cx, int Cy, int Size, HBRUSH Brush )
{
HRGN RgnIn = CreateRectRgn( X + Size, Y + Size, X + Cx - Size, Y + Cy - Size );
HRGN RgnOut = CreateRectRgn( X, Y, X + Cx, Y + Cy );
HRGN RgnNew = CreateRectRgn( 0, 0, 0, 0 );
CombineRgn( RgnNew, RgnOut, RgnIn, RGN_XOR );
SelectClipRgn( DC, RgnNew );
HBRUSH BrushOld = ( HBRUSH )SelectObject( DC, Brush );
PatBlt( DC, X, Y, X + Cx, Y + Cy, PATINVERT );
SelectObject( DC, BrushOld );
SelectClipRgn( DC, NULL );
DeleteObject( RgnNew );
DeleteObject( RgnOut );
DeleteObject( RgnIn );
}
我自己实现了拖动窗口的虚框,和系统的差不多,但是,我用上面函数在屏幕上绘制的虚框,当遇到DirectDraw的窗口(一般是游戏窗口,以及Vista Areo模式)时,虚框就被覆盖掉了,但是系统绘制的虚框不会被覆盖,这个问题困扰我很久了,希望有高人指点下,我到底缺了什么.
我尝试过把遮盖虚框的窗口都枚举出来,然后用SetWindowRgn把他们覆盖我虚框的部分全排除掉,依然没有效果
没什么分,只有这么多了