|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Can Borderless forms have a context menu in the start bar?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 I found the answer on this page http://www.dotnetrix.co.uk/menus.html
Show quote "ThunderMusic" <NoSpAmdanlatathotmaildotcom@NoSpAm.com> wrote in message news:%235iRf9PDHHA.4844@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 > "ThunderMusic" <NoSpAmdanlatathotmaildotcom@NoSpAm.com> wrote in message That would be http://www.dotnetrix.co.uk/misc.htmlnews:edbTVdQDHHA.1748@TK2MSFTNGP02.phx.gbl... >I found the answer on this page http://www.dotnetrix.co.uk/menus.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 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" <EXCHANGE#WITH@AND.REMOVE.SQUAREBRACKETS.[mdaudi100#ntlworld.com]> wrote in Show quote message news:e7GvCCWDHHA.3520@TK2MSFTNGP04.phx.gbl... > "ThunderMusic" <NoSpAmdanlatathotmaildotcom@NoSpAm.com> wrote in message > news:edbTVdQDHHA.1748@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 > 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. 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" <EXCHANGE#WITH@AND.REMOVE.SQUAREBRACKETS.[mdaudi100#ntlworld.com]> wrote in Show quote message news:OY1LOJjDHHA.4060@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 > |
|||||||||||||||||||||||