Home All Groups Group Topic Archive Search About
Author
15 Mar 2006 1:12 PM
cyberclone via DotNetMonster.com
hi all,

how can i create unmoveable form with c#?
in vb6, its very simple
me.moveable = false

in CSharp . ..  ?

i want  a form with title bar.
but i dont want to allow user to move form location.
how can i ?

thanks,
cyberclone

--
Message posted via http://www.dotnetmonster.com

Author
15 Mar 2006 3:29 PM
vj
The code.. is in VB, i hope you can convert to c-sharp... Paste it your
Form, you will get a moveable property

#Region " Form Move Code "

Private Declare Function EnableMenuItem Lib "user32.dll" Alias
"EnableMenuItem" (ByVal hMenu As IntPtr, ByVal uIDEnableItem As Int32, ByVal
uEnable As Int32) As Int32

Private Const HTCAPTION As Int32 = &H2

Private Const MF_BYCOMMAND As Int32 = &H0&
Private Const MF_ENABLED As Int32 = &H0&
Private Const MF_GRAYED As Int32 = &H1&
Private Const MF_DISABLED As Int32 = &H2&

Private Const SC_MOVE As Int32 = &HF010&

Private Const WM_NCLBUTTONDOWN As Int32 = &HA1
Private Const WM_SYSCOMMAND As Int32 = &H112
Private Const WM_INITMENUPOPUP As Int32 = &H117&

Private bMoveable As Boolean = True

<System.ComponentModel.Category("Behavior"),
System.ComponentModel.Description("Allows the form to be moved")> _
   Public Overridable Property Moveable() As Boolean
  Get
   Return bMoveable
  End Get
  Set(ByVal Value As Boolean)
   If bMoveable <> Value Then
    bMoveable = Value
   End If
  End Set
End Property

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

  If m.Msg = WM_INITMENUPOPUP Then
   'handles popup of system menu
   If m.LParam.ToInt32 \ 65536 <> 0 Then    'divide by 65536 to get hiword
    Dim AbleFlags As Int32 = MF_ENABLED
    If Not Moveable Then AbleFlags = MF_DISABLED Or MF_GRAYED
    EnableMenuItem(m.WParam, SC_MOVE, MF_BYCOMMAND Or AbleFlags)
   End If
  End If

  If Not Moveable Then
   If m.Msg = WM_NCLBUTTONDOWN Then
    'cancels any attempt to drag the window by it's caption
    If m.WParam.ToInt32 = HTCAPTION Then
     Return
    End If
   End If
   If m.Msg = WM_SYSCOMMAND Then
    'redundant but cancels any clicks on the Move system menu item
    If (m.WParam.ToInt32 And &HFFF0) = SC_MOVE Then
     Return
    End If
   End If
  End If
  'return control to base message handler
  MyBase.WndProc(m)
End Sub


#End Region

VJ
"cyberclone via DotNetMonster.com" <u5716@uwe> wrote in message
news:5d4ac5672a327@uwe...
Show quoteHide quote
> hi all,
>
> how can i create unmoveable form with c#?
> in vb6, its very simple
> me.moveable = false
>
> in CSharp . ..  ?
>
> i want  a form with title bar.
> but i dont want to allow user to move form location.
> how can i ?
>
> thanks,
> cyberclone
>
> --
> Message posted via http://www.dotnetmonster.com
Are all your drivers up to date? click for free checkup

Author
16 Mar 2006 4:01 AM
cyberclone via DotNetMonster.com
Thanks

--
Message posted via http://www.dotnetmonster.com

Bookmark and Share