Re: Hide the "X" on a Windows Form
Mike Andrews <[email protected]> Wed, 5 Sep 2007 09:44:15 -0500
| Newsgroups | gmane.comp.windows.devel.dotnet.winforms |
|---|---|
| Message-ID | <[email protected]> |
It's good for C# people too. On 9/4/07, Booth, Bill <[email protected]> wrote: > > 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. >