423,674 Members | 1,946 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 423,674 IT Pros & Developers. It's quick & easy.

Can Borderless forms have a context menu in the start bar?

P: n/a
Hi
I'm currently developping a skinnable form by using a borderless form
(Form.FormBorderStyle=None). Is it the right way to go in the first place?
if it is. Assuming that when there is no border to the form there is no
context menu when you right-click on your form in the start bar too (the one
with Restore, Move, Size, Close et al.)... How can I make this context menu
work again? Is there a way to tell the form to make it work even if the form
is borderless?

thanks

ThunderMusic
Nov 20 '06 #1
Share this Question
Share on Google+
5 Replies


P: n/a
I found the answer on this page http://www.dotnetrix.co.uk/menus.html
"ThunderMusic" <No*************************@NoSpAm.comwrote in message
news:%2****************@TK2MSFTNGP02.phx.gbl...
Hi
I'm currently developping a skinnable form by using a borderless form
(Form.FormBorderStyle=None). Is it the right way to go in the first place?
if it is. Assuming that when there is no border to the form there is no
context menu when you right-click on your form in the start bar too (the
one with Restore, Move, Size, Close et al.)... How can I make this
context menu work again? Is there a way to tell the form to make it work
even if the form is borderless?

thanks

ThunderMusic

Nov 21 '06 #2

P: n/a
"ThunderMusic" <No*************************@NoSpAm.comwrote in message
news:ed**************@TK2MSFTNGP02.phx.gbl...
>I found the answer on this page http://www.dotnetrix.co.uk/menus.html
That would be http://www.dotnetrix.co.uk/misc.html

I have been working on better examples, but have put them aside for the
moment as I work on other stuff, but if you want to make the form resizable,
then I would suggest that you leave the FormBorderstyle as is and set the
Caption to "" and ControlBox to False. This will leave you with a 3d border
around the form which needs to be trimmed off when building the region, but
it will enable the Size option in the Window Menu.

If you then define a Border Region you can send WM_NCLBUTTONDOWN messages,
in response to mousedown within the region, with one of the following
NCHITTEST flags as the wParam in order to get window sizing when dragging by
an edge.

HTLEFT
HTRIGHT
HTTOP
HTTOPLEFT
HTTOPRIGHT
HTBOTTOM
HTBOTTOMLEFT
HTBOTTOMRIGHT

Also make sure you disable Visual Styles on the window as this will increase
painting performance and you won't be using them on a skinned window. The
following is the method that I use to disable Visual Styles on the form,
whilst still allowing them on the controls:

<DllImport("uxtheme.dll")_
Public Shared Function SetWindowTheme(ByVal hwnd As IntPtr, _
ByVal pszSubAppName As String, ByVal pszSubIdList As String) As IntPtr
End Function

Protected Overrides Sub CreateHandle()
MyBase.CreateHandle()
If OSFeature.Feature.IsPresent(OSFeature.Themes) Then
SetWindowTheme(Me.Handle, String.Empty, "")
End If
End Sub
--
Mick Doherty
http://dotnetrix.co.uk/nothing.html
Nov 21 '06 #3

P: n/a
thanks a lot... I'll look into it... ;)
Right now, I'm managing resizing by hand by looking where the cursor is and
displaying the good cursor at the right time and sizing when I have to size
by modifying Left, Top, Width and Height... I have a bug tought when I'm
sizing from Left or Top, The window start to move around when it's width and
height = 0. That was the only way I found I could do it with borderless
windows... for now, I will try to use the "more standard way" you explain
here and fill the blanks with what is explained on the site... ;) For the
3D Border I must get rid of it because I use the TransparencyKey of the .Net
Form, so even if my background it completely transparent, the border still
show because I don't have to use region by now... But the example on the
site already get rid of the border even if the window is sizable.

if you have better examples for this exact same purpose, would you be so
kind as to post them here or on my e-mail please? (just get rid of the
NoSpAm at the beginning, the @NoSpAm.com at the end and decode...) ;) and
please indicate in the subjet you are from the newsgroups because your
message will probably end up in my junk folder, so I must be able to
recognize you... ;)

thanks again...

ThunderMusic

"Mick Doherty"
<EX***********@AND.REMOVE.SQUAREBRACKETS.[mdaudi100#ntlworld.com]wrote in
message news:e7**************@TK2MSFTNGP04.phx.gbl...
"ThunderMusic" <No*************************@NoSpAm.comwrote in message
news:ed**************@TK2MSFTNGP02.phx.gbl...
>>I found the answer on this page http://www.dotnetrix.co.uk/menus.html

That would be http://www.dotnetrix.co.uk/misc.html

I have been working on better examples, but have put them aside for the
moment as I work on other stuff, but if you want to make the form
resizable, then I would suggest that you leave the FormBorderstyle as is
and set the Caption to "" and ControlBox to False. This will leave you
with a 3d border around the form which needs to be trimmed off when
building the region, but it will enable the Size option in the Window
Menu.

If you then define a Border Region you can send WM_NCLBUTTONDOWN messages,
in response to mousedown within the region, with one of the following
NCHITTEST flags as the wParam in order to get window sizing when dragging
by an edge.

HTLEFT
HTRIGHT
HTTOP
HTTOPLEFT
HTTOPRIGHT
HTBOTTOM
HTBOTTOMLEFT
HTBOTTOMRIGHT

Also make sure you disable Visual Styles on the window as this will
increase painting performance and you won't be using them on a skinned
window. The following is the method that I use to disable Visual Styles on
the form, whilst still allowing them on the controls:

<DllImport("uxtheme.dll")_
Public Shared Function SetWindowTheme(ByVal hwnd As IntPtr, _
ByVal pszSubAppName As String, ByVal pszSubIdList As String) As IntPtr
End Function

Protected Overrides Sub CreateHandle()
MyBase.CreateHandle()
If OSFeature.Feature.IsPresent(OSFeature.Themes) Then
SetWindowTheme(Me.Handle, String.Empty, "")
End If
End Sub
--
Mick Doherty
http://dotnetrix.co.uk/nothing.html

Nov 21 '06 #4

P: n/a
The existing example on my site uses the same method that you are using to
resize the form. The newer example that I have been working on, uses the
windows resizing methods, similar to the move a borderless form example on
my site. This method will not work with the current example as the Size
menuitem of the Window menu needs to be enabled. If your form does not have
a border it is not sizable and so the menuitem will be grayed out.

If you are using the forms TransparencyKey to shape the form, then the new
method is probably not suitable as it requires that you define a region so
that you can Edge Detect and decide which of the 8 directions you need to be
sizing in.

The examples that I'm working on are not complete and are VB only at the
moment (I don't write the C# version until I am happy with the VB version).
I won't be giving out or posting the examples until they are complete, but
feel free to ask if you run into problems.

--
Mick Doherty
http://dotnetrix.co.uk/nothing.html
Nov 22 '06 #5

P: n/a
I have started a new thread with a problem I run into, maybe you already
seen this kind of behavior?

thanks for the help...

ThunderMusic

"Mick Doherty"
<EX***********@AND.REMOVE.SQUAREBRACKETS.[mdaudi100#ntlworld.com]wrote in
message news:OY**************@TK2MSFTNGP03.phx.gbl...
The existing example on my site uses the same method that you are using to
resize the form. The newer example that I have been working on, uses the
windows resizing methods, similar to the move a borderless form example on
my site. This method will not work with the current example as the Size
menuitem of the Window menu needs to be enabled. If your form does not
have a border it is not sizable and so the menuitem will be grayed out.

If you are using the forms TransparencyKey to shape the form, then the new
method is probably not suitable as it requires that you define a region so
that you can Edge Detect and decide which of the 8 directions you need to
be sizing in.

The examples that I'm working on are not complete and are VB only at the
moment (I don't write the C# version until I am happy with the VB
version). I won't be giving out or posting the examples until they are
complete, but feel free to ask if you run into problems.

--
Mick Doherty
http://dotnetrix.co.uk/nothing.html

Nov 22 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.