PDA

View Full Version : از کار انداختن غیر قابل حرکت بودن فرم



amir_pro
دوشنبه 13 فروردین 1386, 10:54 صبح
2 هفته پیش دنبال این بودم که بشه فرم را غیر قابل حرکت کرد بدون borderstyle . حالا کدشا یکی از دوستان فکر کنم جناب (bermooda( لطف کردند و یک لینک دادند که کارما حل کرد - حالا میخوام روی یک دکمه که کاربر زد فرم را بشه تغییر داد- اینم کدهای اون لینک
معذرت میخوام که دوتا پست درست شد-شرمنده

[DllImport("user32.dll", SetLastError=true)]
public static extern Int32 EnableMenuItem ( System.IntPtr hMenu , Int32
uIDEnableItem, Int32 uEnable);
private const Int32 HTCAPTION = 0X00000002;
private const Int32 MF_BYCOMMAND =0X00000000;
private const Int32 MF_ENABLED =0X00000000;
private const Int32 MF_GRAYED =0X00000001;
private const Int32 MF_DISABLED =0X00000002;
private const Int32 SC_MOVE = 0XF010;
private const Int32 WM_NCLBUTTONDOWN = 0XA1;
private const Int32 WM_SYSCOMMAND = 0X112;
private const Int32 WM_INITMENUPOPUP = 0X117;
protected override void WndProc(ref System.Windows.Forms.Message m )
{
if( m.Msg == WM_INITMENUPOPUP ) //handles popup of system menu
if ((m.LParam.ToInt32() / 65536) != 0 ) // 'divide by 65536 to get hiword
{
Int32 AbleFlags = MF_ENABLED;
//if (!Moveable)
AbleFlags = MF_DISABLED | MF_GRAYED; // disable the move
}

EnableMenuItem(m.WParam, SC_MOVE, MF_BYCOMMAND);

if(m.Msg==WM_NCLBUTTONDOWN) //cancels the drag this is IMP
{
if(m.WParam.ToInt32()==HTCAPTION)
return;
}

if (m.Msg==WM_SYSCOMMAND) // Cancels any clicks on move menu
{
if ((m.WParam.ToInt32() & 0xFFF0) == SC_MOVE)
return;
}
base.WndProc(ref m);
}

Amir Oveisi
دوشنبه 13 فروردین 1386, 22:04 عصر
فکر کنم باید مقادیر SC_MOVE و AbleFlags تغییر کنه ولی مقدار SC_MOVE نمیدونم چند باید بشه