Re: Hide the "X" on a Windows Form
"Booth, Bill" <[email protected]> Tue, 4 Sep 2007 17:11:54 -0500
| Newsgroups | gmane.comp.windows.devel.dotnet.winforms |
|---|---|
| Message-ID | <[email protected]> |
Here is a good site for that sort of stuff for VB .NET people anyway. http://allapi.mentalis.org/apilist/apilist.php http://allapi.mentalis.org/apilist/GetSystemMenu.shtml I think the new site has some good stuff as well. http://mentalis.org/ -----Original Message----- From: Discussion forum for developers using Windows Forms to build apps and controls [mailto:[email protected]] On Behalf Of Phil Sayers Sent: Tuesday, September 04, 2007 13:03 To: [email protected] Subject: Re: [DOTNET-WINFORMS] Hide the "X" on a Windows Form I get the feeling that plenty of the windows API calls that were used to get additional functionality in the vb6 days have been lost/forgotten with the advent of .Net, but there still seems to be a need for some of the techniques and API calls. -----Original Message----- From: Discussion forum for developers using Windows Forms to build apps and controls [mailto:[email protected]]On Behalf Of Mike Andrews Sent: Tuesday, September 04, 2007 1:40 PM To: [email protected] Subject: Re: [DOTNET-WINFORMS] Hide the "X" on a Windows Form I'd forgotten all about that from my vb6 days. Yes, you can disable the form's close system menu which will in turn disable the close button. I've got a class below that implements the given solution. However, ALT + F4 will still cause the form to close so you will have to add keyboard checks to disable that as well. public class FormDisableClose: Form { #region PInvoke [DllImport("user32.dll")] private static extern IntPtr GetSystemMenu(IntPtr hWnd, Int32 bRevert); [DllImport("user32.dll")] private static extern Int32 GetMenuItemCount(IntPtr hMenu); [DllImport("user32.dll")] private static extern Int32 DrawMenuBar(IntPtr hWnd); [DllImport("user32.dll")] private static extern Int32 RemoveMenu(IntPtr hMenu, Int32 nPosition, Int32 wFlags); private const int MF_BYPOSITION = 0x400; private const int MF_REMOVE = 0x1000; #endregion protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); IntPtr hMenu = GetSystemMenu(this.Handle, 0); if (!hMenu.Equals(IntPtr.Zero)) { int n = GetMenuItemCount(hMenu); if (n > 0) { RemoveMenu(hMenu, n - 1, MF_BYPOSITION | MF_REMOVE); RemoveMenu(hMenu, n - 2, MF_BYPOSITION | MF_REMOVE); DrawMenuBar(this.Handle); } } } } On 9/4/07, Phil Sayers <[email protected]> wrote: > > this might get you close > > http://www.thescripts.com/forum/thread362575.html > > > > -----Original Message----- > From: Discussion forum for developers using Windows Forms to build apps > and controls [mailto:[email protected] ]On Behalf Of > Mike Andrews > Sent: Tuesday, September 04, 2007 12:55 PM > To: [email protected] > Subject: Re: [DOTNET-WINFORMS] Hide the "X" on a Windows Form > > > I don't believe there is a way to do that unless you want to create your > own > owner-drawn form. > You can prevent the form from closing when the x is clicked by using the > Form_Closing event and setting the Cancel property of the CancelEventArgs > argument to true. > > > On 9/4/07, Greg Robinson <[email protected]> wrote: > > > > How does one hide the "X" (Close) on a Windows From? I need to hide the > X > > but leave the Maximize and Minimize. > > > > Thanks, > > > > > > > > Greg Robinson > > Custom Data Systems, Inc. > > www.cds-am.net > > > The information in this e-mail is confidential, may be legally privileged and is intended solely for the addressee. If you have received this e-mail in error, you are hereby notified that any use, distribution, or copying of this communication is strictly prohibited.