In Windows 7, the volume mixer windows has a specific style, with a thick, transparent border, but no title bar. How do i recreate that window style in a winforms window?
I tried setting Text to string.Empty, and ControlBox to false, which removes the titlebar, but then the border also disappears:
form.Text = string.Empty; form.ControlBox = false; form.FormBorderStyle = FormBorderStyle.SizableToolWindow;
For a fixed size window, you should still use FormBorderStyle.SizableToolWindow
, but you can override the form's WndProc
to ignore non-client hit tests (which are used to switch to the sizing cursors):
protected override void WndProc(ref Message message) { const int WM_NCHITTEST = 0x0084; if (message.Msg == WM_NCHITTEST) return; base.WndProc(ref message); }
If you want to really enforce the size, you could also set MinimumSize
equal to MaximumSize
on the form.
Since "This edit was intended to address the author of the post and makes no sense as an edit. It should have been written as a comment or an answer." I present an edit to Chris' answer as a new answer.
The code his answer works as described - except that it also prevents any client area mouse event to occur. You need to return 1 (as in HTCLIENT) to fix that.
protected override void WndProc(ref Message message) { const int WM_NCHITTEST = 0x0084; const int HTCLIENT = 0x01; if (message.Msg == WM_NCHITTEST) { message.Result = new IntPtr(HTCLIENT); return; } base.WndProc(ref message); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With