PDA

View Full Version : closebox



iranrose63
چهارشنبه 10 مرداد 1386, 13:19 عصر
آیا میشه کاری کرد که closeBox , Enabel بالای فرم false بشه یعنی وقتی روی اون کلیک میکنیم وارد formclosing نشه؟

once4ever
چهارشنبه 10 مرداد 1386, 13:33 عصر
اگه فقط میخوای فرمت بسته نشه
تو همون formclosing میتونی رمند close شدن رو cancel کنی

iranrose63
پنج شنبه 11 مرداد 1386, 12:32 عصر
نه اینو نمی خوام میخوام Enabel علامت ضربدر بالای فرم false بشه شبیه کاری که میشه در foxpro انحام داد کسی نظری نداره

mehdi.mousavi
پنج شنبه 11 مرداد 1386, 14:02 عصر
آیا میشه کاری کرد که closeBox , Enabel بالای فرم false بشه یعنی وقتی روی اون کلیک میکنیم وارد formclosing نشه؟

چرا نشه؟ همه کار میشه کرد. ابتدا تعاریف زیر رو به کلاستون اضافه کنید:


private const Int32 SC_CLOSE = 0xF060;
private const Int32 MF_GRAYED = 0x1;

[DllImport("user32.dll")]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, Boolean bRevert);

[DllImport("user32.dll")]
private static extern Int32 EnableMenuItem(IntPtr hMenu, Int32 wIDEnableItem, Int32 wEnable);

سپس، تو OnLoad فرم، کد زیر رو بنویسید:


EnableMenuItem(GetSystemMenu(this.Handle, false), SC_CLOSE, MF_GRAYED);


فراموش نکنید که باید System.Runtime.InteropServices namespace رو در کدتون declare کنید.

iranrose63
شنبه 13 مرداد 1386, 07:08 صبح
واقعا ازت متشکرم یه مشکل بزرگ منو حل کردی تشکر:تشویق:

iranrose63
شنبه 13 مرداد 1386, 08:20 صبح
حالا یه سوال دیگه دارم .
میشه کاری کرد که کلید alt+f4 هم غیر فعال بشه یعنی با زدن این کلید ترکیبی وارد formclosing نشه؟

mehdi.mousavi
شنبه 13 مرداد 1386, 09:39 صبح
حالا یه سوال دیگه دارم .
میشه کاری کرد که کلید alt+f4 هم غیر فعال بشه یعنی با زدن این کلید ترکیبی وارد formclosing نشه؟


بازم جواب من همونه. :) چرا نشه؟ همه کار میشه کرد. فقط باید تو کلاس فرمتون تابع WndProc رو بصورت زیر override کنید.



protected override void WndProc(ref Message m)
{
const Int32 WM_SYSCOMMAND = 0x0112;
const Int32 SC_CLOSE = 0xF060;

if (m.Msg == WM_SYSCOMMAND && (Int32)m.WParam == SC_CLOSE)
return;

base.WndProc(ref m);
}

iranrose63
شنبه 13 مرداد 1386, 10:17 صبح
بابا ایول واقعا واقعا دمت گرم خیلی خیلی ممنونم
میشه بهم بگید این چیزایی رو که شما برام نوشتید تو کدوم کتاب میتونم پیدا کنم
بازم ممنون

mehdi.mousavi
شنبه 13 مرداد 1386, 18:40 عصر
بابا ایول واقعا واقعا دمت گرم خیلی خیلی ممنونم
میشه بهم بگید این چیزایی رو که شما برام نوشتید تو کدوم کتاب میتونم پیدا کنم
بازم ممنون

سلام.
خواهش میکنم، قابلی نداشت. اما در مورد سوالتون، فکر نمی کنم هیچ کتابی در مورد این مسائل صحبت کنه، چون معمولا این جور چیزا عرف نیست و تعداد اندکی از برنامه ها هستن که چنین خصائصی دارن.

به نظر من اولین چیزی که یه برنامه نویس ویندوز (جدا از زبان برنامه نویسی مورد علاقه اش) باید یاد بگیره، شناخت دقیق سیستم عاملی هستش که می خواد براش برنامه بنویسه. وقتی سیستم عامل رو شناخت، اونوقت می تونه اونطوری که مایله سیستم عامل رو به خدمت بگیره... اگر میخواهید واقعا تو ویندوز برنامه بنویسید، کتاب Charles Petzold (http://www.amazon.com/exec/obidos/ISBN=157231995X) رو حتما بخونید. این کتاب اطلاعات دقیقی از چگونگی کارکرد Application ها در Windows بهتون میده. البته برای برنامه نویسان C/CPP نوشته شده...

در هر حال، اگر بازهم مشکلی بود در خدمتم.