Windows 仅用边框绘制窗口

Windows 仅用边框绘制窗口,windows,background,onpaint,border,Windows,Background,Onpaint,Border,如何创建只显示窗口边框的应用程序窗口,但我不想显示窗口本身的内容。我的意思是,我想通过窗口的整个区域查看桌面的其余部分或其他窗口。禁止使用透明胶片。只要画边界就行了 我想这就像检测到消息WM_-ERASEBKGND和WM_-PAINT,在这些情况下,我什么也不做,以强制不在内容中绘画,但我已经尝试过了,窗口仍在绘制白色背景 我怎样才能得到它呢?根据我的理解 如果您在win32应用程序或wince应用程序中工作 在类的注册期间,即窗口类的注册 If object of WNDCLASS is wc

如何创建只显示窗口边框的应用程序窗口,但我不想显示窗口本身的内容。我的意思是,我想通过窗口的整个区域查看桌面的其余部分或其他窗口。禁止使用透明胶片。只要画边界就行了

我想这就像检测到消息WM_-ERASEBKGND和WM_-PAINT,在这些情况下,我什么也不做,以强制不在内容中绘画,但我已经尝试过了,窗口仍在绘制白色背景


我怎样才能得到它呢?

根据我的理解

如果您在win32应用程序或wince应用程序中工作

在类的注册期间,即窗口类的注册

If object of WNDCLASS is wc . Assign the value for wc.hbrbackground as follows:
wc.hbrBackground=HBRUSH GetStockObjectNULL\u笔刷


这将工作,即你可以看到背景窗口的东西。但在这之后,它将不会清除当前窗口中的背景窗口图像。为此,你需要做一些不同的事情。我希望一旦你运用了这个,你就会明白我的确切意思。

根据我的理解

如果您在win32应用程序或wince应用程序中工作

在类的注册期间,即窗口类的注册

If object of WNDCLASS is wc . Assign the value for wc.hbrbackground as follows:
wc.hbrBackground=HBRUSH GetStockObjectNULL\u笔刷



这将工作,即你可以看到背景窗口的东西。但在这之后,它将不会清除当前窗口中的背景窗口图像。为此,你需要做一些不同的事情。我希望一旦你应用了这个,你就会明白我的确切意思。

创建和应用区域CreateRectRgn,SetWindowRgn是你的一个选项吗?你可以把客户区剪掉

创建和应用区域CreateRectRgn、SetWindowRgn是否为您的选项?你可以把客户区剪掉性能选项->在窗口和按钮上使用视觉样式当我禁用它时,它会像我预期的那样工作,但是当我再次启用默认行为时,它始终使用wc.hbrbackground中指定的颜色绘制背景,如果为NULL,则使用黑色,或者使用NULL_笔刷,则不重要。然后,当我调整应用程序的大小时,为了使分辨率接近桌面的大小,由于自动背景绘制,所以调整大小不是流动的,而且我还没有开始做任何事情。这就是重点。@Tonatiuh:好的,让我看看我的side@Tonatiuh:在WM_PAINTInvalidateRgn hWnd处使用InvalidateRgn函数,NULL,带FALSE或TRUE;对你有用吗?不要在这里解决问题,仍然这样做。另外,如果我使用MoveWindow方法调整窗口的大小,我可以在调试时看到,首先用背景绘制窗口,然后我会收到消息WM_橡皮擦BKGN和WM_绘制,因此如果在自动绘制背景后获得控件,我看不到如何处理它。@Tonatiuh:是的,它在这里起作用了。。当调用下一个WM_PAINT时,你应该为清除区域指定TRUE。我发现原因:Windows 7和我猜vista也有系统属性->性能选项->在窗口和按钮上使用视觉样式当我禁用它时,它会像我预期的那样工作,但当我再次启用默认行为时,它始终使用wc.hbrbackground中指定的颜色绘制背景,如果为NULL,则使用黑色,或者使用NULL_笔刷,则不重要。然后,当我调整应用程序的大小时,为了使分辨率接近桌面的大小,由于自动背景绘制,所以调整大小不是流动的,而且我还没有开始做任何事情。这就是重点。@Tonatiuh:好的,让我看看我的side@Tonatiuh:在WM_PAINTInvalidateRgn hWnd处使用InvalidateRgn函数,NULL,带FALSE或TRUE;对你有用吗?不要在这里解决问题,仍然这样做。另外,如果我使用MoveWindow方法调整窗口的大小,我可以在调试时看到,首先用背景绘制窗口,然后我会收到消息WM_橡皮擦BKGN和WM_绘制,因此如果在自动绘制背景后获得控件,我看不到如何处理它。@Tonatiuh:是的,它在这里起作用了。。当调用下一个WM_PAINT时,U应为清除区域指定TRUE