سلام
مطلب امروز در مورد پنجره های Modless هستش.
شاید بگید یعنی چی !!!
اگه دقت کرده باشید معمولا پیغامهای خطا یا هشدار دهنده به شکلی هستند که وقتی نمایش داده میشوند دیگه نمی تونید به پنجره برنامه اصلی دسترسی داشته باشید و غیر فعال می شود تا زمانی که به اون پیغام خطا یا هشدار یه جواب مناسب (حالا از OK گرفته تا Yes و No ) بدهید. به اینگونه نمایش یه پنجره (همون پیغام خطا خودش یه پنجره هستش دیگه) روش Modal میگن.
حالا بعضی مواقع نیاز دارید که پنجره هایی رو نشون بدید که همزمان نیاز باشه که هم روی پنجره اصلی برنامه و هم روی این پنجره جدید نمایش داده شده کار شود (یه مثال خوب و روشن برای این نوع یاهو مسنجر هستش که این صفحه اصلی رو در ابتدا دارید و به ازای هر PM که باز می کنید یا به شما داده میشه یه پنجره باز میشه که باید بتونید روی هرکدوم که خواستید کار کنید ) به این نوع نمایش پنجره Modless میگن.
کار خیلی راحت و کوتاه هستش.
اول که خب باید دیالوگتون و کد های مربوط رو بنویسید!
هر موقع خواستید از یه دیالوگ یه دیالوگ دیگه رو نمایش بدید کافی هستش که چند خط زیر رو بنویسید :
CDialog *MyDlg=new CDialog();
MyDlg->Create(IDD_ABOUTBOX,0);
MyDlg->ShowWindow(true);
توضیحات :
IDD_ABOUTBOX مربوط به ID دیالوگ اصلی شما میشود که حالا اینجا من برای سادگی کار خواستم دیالوگ About که بصورت پیش فرض ساخته میشه رو نشون بدم !
اگه دقت کنید تابع Create از شما ۲ تا پارامتر می خواد که با اولی آشنا شدید. اما دومی چیه ؟! باید بگم اگه دومی رو مقدار ۰ یا همون NULL قرار بدید فرض میکنه که پدر دیالوگی که میخواهید نمایش بدید اون دیالوگی هستش که از اون قصد نمایش این دیالوگ جدید رو دارید و یکم با اینکه یه دیالوگ مستقل باشه فرق میکنه (مثلا اگه دیالوگ اصلی رو مینیمم کنید این هم همراه اون مینیمم میشه و اگه این جدید رو مینیمم کنید دیگه روی TaskBar دیده نمیشه و مثل پروژهای MDI انگار که دیالوگ اصلی شما برنامه Container اصلی باشد دیالوگ جدید به همون شکل مینیمم میشه ! حالا تست کنید بهتر دستگیرتون میشه!). اما اگه بخواهید عین صفحه PM در YAHOO! Messeneger وقتی دیالوگ جدید رو نمایش میدید بر روی TaskBar هم دیده بشه باید یه اشاره گر به Desktop بهش بدید که با تابع GetDesktopWindow که هیچ پارامتر ورودی هم نیاز نداره این کار میسر میشه.
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن