How to remove the non client area of a WPF window without using AllowTransparency

I would like to remove the resizing border from my WPF custom window. I already found that I have to handle the WM_NCCALCSIZE message and return 0. That removes the border and aligns the window to the top left corner of the window. The problem is that by doing so, the client area increases and the WPF root control doesn't. That creates black edges on the left and bottom sides of the window that I would like to get rid of.

I'm using VS2010 C# Windows XP and would like this to work under both Windows XP and Windows 7.

Thanks in Advance.

EDIT: I found out what is causing the black edges, they are the window behind. Now it seems that the problem is with the root element of the window not occupying the whole window. When I set its margin to negative values it draws over the black area. Apparently the layout pass is ok and the desired size is the same as the window but the render size is different.

I also found out that the whole problem could be solved by removing WS_THICKFRAME from the window style. The problem with that is the resizing functionality that is enabled only when WS_THICKFRAME is used. I'm using WM_NCHITTEST to do the resizing and if the window knows it doesn't have a resizing border, it will shutdown its resizing functionality.

I would like to make the root element occupy the whole window to eliminate the black window background or alternatively enable the native resizing functionality without the thick frame.

Thanks.


I found the reason for that black area. It appears that the code I was using that someone else made was causing the black area by somehow messing with the layout pass of the framework and therefore the correct size of the root element. I handled the WM_NCCALCSIZE in another project and it worked like a charm.

After all of that, although I found the idle way to create a custom window with all of the original window functionality, I decided to use the standard window the Microsoft has to offer so that my program will have future compatibility with windows.

If someone would like the code or help with WPF window customization they can comment here and I will help so that at least all of my research won't go in vain.

Thanks for reading.

链接地址: http://www.djcxy.com/p/25902.html

上一篇: 托管Flash ActiveX组件时的WPF窗口透明度

下一篇: 如何在不使用AllowTransparency的情况下删除WPF窗口的非客户区