همونطور که میبینید یه پارامتر ورودی از نوع HWND یا handle to window یا همون window handle خودمون رو میگیر.خیلی منطقیه ، این تابع باید بدونه کدون پنجره را از بین پنجره های موجود ببنده.
توی دات نت شی های ساخته شده از فرم ها و کنترل ها که دارای پراپرتی handle هستند ،در واقع شماره handle ساخته شده توسط سیستم عامل برای اون فرممون یا کنترلمون را در بر دارند.
اگر دقت کنید میبینید همه ی این شی ها دارای متد dispose هستند.این متد با استفاده از این handle اون فرم یا کنترل را میبنده و یا منابع در اختیارش رو میگیره.dispose خودش در عمل DestroyWindows رو برای بستن پنجره های(فرمهای ما) در دات نت صدا میزنه.حالا اگه شما سرتون درد میکنه برای اثبات این موضوع بیابید باهم اونو پیاده سازی کنیم:
قبل از خوندن ادامه باید با نحوه استفاده از dll ها یا همون api های ویندوز در سی شارپ یا دات نت آشنا باشین اگه نیستین به مقاله خودم در این رابطه
در اینجا رجوع کنید، بعدش بیایید تا سرتون درد بگیره!
خب یه پروژه windows application بسازید.بعد یه دکمه روی فرمتون قرار بدید .می خواهیم با کلیک روی این دکمه فرممون بسته بشه.(البته نه با نوشتن this.Close بلکه با استفاده از api موجود (user32.dll) و عامل این کار یعنی DestroyWindow).پس دست به کار شید:
در داخل کلاس form1 مون باید از Dllimport برای شناسوندن user32.dll استفاده کنیم.امید واردم مقاله ای که معرفی کردم رو خونده باشین چون حسش نیست در مورد این مطلب اینجا توضیح بدم.خب من این طوری از dllimport استفاده کردم:
[System.Runtime.InteropServies.DllImport("user32.dl l")]
public static extern void DestroyWindow(IntPtr handle);
ممکنه بگید چرا نوع داده ای handle رو IntPtr گذاشتم؟
چونکه این عدد منحصر به فرم در سیستم های مختلف از لحاض سخت افزاری ، نمایش مقادیر را در فرمت های مختلف نشون میده.اینطوری بگم فرمت خروجی(الگوی بیتی) یا انگلیسیش میشه bit pattern این عدد توی بعضی سیستم ها ممکنه 32 بیتی باشه ، بعضی ممکنه 64 بیتی باشه، (یعنی نمایش یک عدد با 32 بیت یا 64 بیت)برای همین نوع داده ای handle رو IntPtr گزاشتیم.همونطور که میدونید IntPtr سایزش از نظر بیتی بستگی داره به سیستمی که درونش مورد استفاده قرار گرفته، مثلا توی سیستم های 32 بیتی ، 32 بیتی میشه و توی 64بیتی ها به شکل 64 بیتی در میاد.
حال روی دکمه دو بار کلیک کنید تا وارد متد مدیریت رویداد click دکمه مون بشیم.و بنویسید:
DestroyWindow(this.Handle);
حالا برنامه را اجرا کنید.با اجرا یه پنجره ویندوزی اجرا میشهپس به اون یه handle داده میشه.این handle توی this.Handle ذخیره میشه.حال با کلیک روی دکمه شاهد بسته شدن فرم هستید.
نظرتون رو راجه به کیفیت مقاله بدین.ممنون
موفق باشید