8
votes

I'm writing a GUI program using C++ and Winapi, and I want my window to have a custom border. Visual Studio 2013 on Windows Desktop does this, replacing the typical window border with its own scheme while still functioning the same as a normal window with a close, minimize, and restore button, as well as being movable.

A long-winded way of doing this would be to create a window with the WS_POPUP style and intercept mouse events using collision detection. However, considering Microsoft itself has created programs with different GUI styles, it occurred to me that there might be a more standardized way of doing this. To be clear I'm not interested in using 3rd party APIs like QT or GTK. I want to do this solely with the libraries that Microsoft provides. Considering these limitations, is there another method to accomplish this?

1
Not sure exactly what you want but 2 pointers: WM_NC... and Desktop Window Manager. well ok docs: msdn.microsoft.com/en-us/library/windows/desktop/… - Cheers and hth. - Alf
@Cheersandhth.-Alf That seems to be what I'm looking for. Just one more question though, if you don't mind: how do I get the area of the desktop that isn't covered by the taskbar? I still don't know this after like a year working with winapi for some reason. - NmdMystery
Oh. I can't recall. I'd guess GetSystemMetrics? Just google it. ;-) - Cheers and hth. - Alf

1 Answers

2
votes

Take a look at this example of a custom drawn window.

In order to get the effect of a "custom drawn window" you need to paint the non-client parts of the window using WM_NCPAINT.

Here are some related questions: