|
آیا تا به حال در
هنگام کار با برنامه
ای پیغام Error دریافت
کرده اید؟ برای
نمایش چنین پیغام
هایی از Message Box استفاده
می شود که فرمی ساده
است و روی آن یک Static،
چندین Button از قبیل Yes و No و OK
و Cancel و گاهی اوقات هم یک
آیکون متناسب با
پیغام قرار دارد. در
این قسمت می خواهم
طریقه ی نمایش یک Message Box
را توضیح دهم، ولی
ابتدا باید مفهوم Event
(رویداد) را یاد
بگیرید.
هنگامی که کاربر
با برنامه ی شما کار
می کند اعمالی انجام
می دهد، مثلاً
برنامه ی شما را باز
می کند، آن را جا به جا
می کند و تغییر
اندازه می دهد، دکمه
ای از کیبورد را فشار
می دهد، بر روی دکمه
ای کلیک می کند و یا در
یک جعبه ی متنی
عبارتی را تایپ می
کند. هنگام انجام
تمام اعمال گفته شده
سیستم عامل پیغامی
را به برنامه ی شما می
دهد که در آن اطلاعات
مربوط به عمل انجام
شده با فرمتی خاص
قرار دارد. شما نیازی
به سر و کله زدن با این
پیغام ها ندارید
زیرا MFC کار را برای
شما راحت کرده است،
فقط در صورت دانستن
نام Event یا رویداد می
توانید از آن
استفاده کنید. به این
صورت عمل کنید: بر روی
کنتری مورد نظر رایت
کلیک کنید و ClassWizard را
انتخاب کنید، در
لیست Objects ID نام ID کنترل و
در لیست Messages نام Event مورد
نظر را انتخاب کنید.
حال Add Function را کلیک کنید
تا تابع اضافه شود.
مراحل بالا را
برای دکمه ای که
خودتان اضافی می
کنید انجام دهید و در
قسمت Messages گزینه ی BN_CLICKED را
انتخاب کنید. پس از
اضافه کردن تابع آن،
بر روی دکمه ی Edit Code کلیک
کنید تا برای اولین
بار وارد صفحه ی کد
شوید. این صفحه کد
مربوط به فرمی است که
دکمه را روی آن قرار
داده اید. راه میان بر
برای انجام اعمال
بالا دابل کلیک بر
روی دکمه ی مورد نظر و
سپس کلیک بر روی OK است.
در این صفحه با کدی
مانند زیر رو به رو می
شوید:
void CMessageBoxDlg::OnButton1()
{
// TODO: Add your control notification handler code here
}
خط اول، تعریف
تابع مربوط به
رویداد کلیک دکمه
است که نام آن (OnButton1) با ID
دکمه (Button1) مرتبط است.
تابع قسمتی از کد است
که می تواند چندین
مقدار دریافت کند و
پس از انجام کارهایی
مقداری را
بازگرداند مانند
توابع sin و cos و log در ریاضی.
هر برنامه متشکل از
چندین تابع است که می
توان هر کدام از آن ها
را در هر جایی از
برنامه فرا خواند تا
اجرا شوند. تابع شما
از آن نوع توابع است
که نه مقداری می گیرد
(پرانتز جلوی آن که
لیست مقادیری که
باید به داده شود را
معرفی می کند خالی
است) و نه مقداری برمی
گرداند (کلمه ی void می
گوید تابع مقداری
برنمی گرداند) و تنها
هنگامی اجرا می شود
که ویندوز پیغام BN_CLICKED را
به برنامه ی شما بدهد.
CMessageBoxDlg قبل از نام تابع
نشان می دهد که این
تابع متعلق به کلاس
(در مورد کلاس بعداً
توضیح می دهم چون کمی
پیچیده است) یا
محدوده فایل CMessageBoxDlg است.
محدوده ی تابع با }
شروع و با { تمام می
شود. در این
محدوده فقط یک خط
قرار دارد که با // شروع
می شود. هر خطی که با //
شروع شود و به رنگ سبز
باشد، یک Comment (توضیح) است
و جزیی از برنامه نمی
باشد پس پاک کردن آن
مشکلی ندارد. نوع
دیگری از comment هم وجود
دارد که به یک خط
محدود نمی شود. این comment
با */ شروع و با /* تمام می
شود. با این comment حتی می
توان میان یک خط
دستوری comment نوشت. برای
نمایش یک Message Box از تابع MessageBox
استفاده می شود. به کد
زیر توجه کنید:
void CMessageBoxDlg::OnButton1()
{
MessageBox("You clicked on 'show' button!");
}
کدی که مشاهده
می کنید تابع MessageBox را
فرا می خواند و در
داخل پرانتز یک رشته
را به آن می دهد تا آن
را نمایش دهد. رشته در
میان دو " (دابل کوتیشن)
نوشته می شود و شامل
تعدادی کارکتر است.
اگر برنامه را با Ctrl + F5
اجرا کنید و روی دکمه
کلیک کنید، با پیغام
زیر مواجه می شوید:

رشته ای که به
عنوان پیغام نوشتید
پارامتر اول تابع MessageBox
است. این تابع
پارامتر های دیگری
هم دارد. پارامتر دوم
آن نام پنجره ی پیغام
است که در Title Bar نوشته می
شود. پارامترها با یک
کاما از هم جدا می
شوند.
void CMessageBoxDlg::OnButton1()
{
MessageBox("You clicked on 'show' button!",
"<<Attention>>");
}
نتیجه ی اجرای
برنامه به این صورت
است:

پارامتر سوم این
تابع، نوع پیغام،
یعنی آیکون و دکمه
های نمایشی و
تنظیمات دیگر آن را
تعیین می کند. این
پارامتر می تواند
شامل پرچم های زیر
باشد که به پنج دسته
تقسیم می شوند. از هر
دسته (به غیر از دسته ی
5) فقط می توانید یک
پرچم را به کار ببرید
که با علامت | (\ + Shift) از هم
جدا می شوند. توجه
کنید که C++ جزو زبان
های حساس به حالت است
و شما باید کلمات (غیر
از کلمات داخل رشته و
کلمات شبیه به آن) را
عین آنچه در این جا
نوشته می شود
بنویسید.
1. دکمه ها:
MB_ABORTRETRYIGNORE: دکمه های Abort و Retry و
Ignore.
MB_CANCELTRYCONTINUE: سه دکمه ی Cancel و Try Again و
Continue.
MB_HELP: دکمه ی Help. این پرچم
به طور استثنا می
تواند همراه پرچم
های دیگر همین دسته
استفاده شود.
MB_OK: دکمه ی OK. این حالت
پیش فرض برای دکمه
است.
MB_OKCANCEL: دکمه های OK و Cancel.
MB_RETRYCANCEL: دو دکمه ی Retry و Cancel.
MB_YESNO: دکمه های Yes و No.
MB_YESNOCANCEL: سه دکمه ی Yes و No و Cancel.
2. آیکون ها:
MB_ICONEXCLAMATION: شماره ی 1.
MB_ICONWARNING: شماره ی 1.
MB_ICONINFORMATION: شماره ی 2.
MB_ICONASTERISK: شماره ی 2.
MB_ICONQUESTION: شماره ی 3.
MB_ICONSTOP: شماره ی 4.
MB_ICONERROR: شماره ی 4.
MB_ICONHAND: شماره ی 4.
3. دکمه ی پیش فرض:
MB_DEBUTTON1: دکمه ی اول پیش
فرض است. منظور از
پیش فرض، دکمه ی
دارای فوکس هنگام
باز شدن پنجره است.
MB_DEBUTTON2: دکمه ی دوم پیش
فرض است.
MB_DEBUTTON3: دکمه ی سوم پیش
فرض است.
MB_DEBUTTON4: دکمه ی چهارم پیش
فرض است.
4. قابلیت Modality:
MB_APPMODAL: کاربر باید به
پیغام پاسخ دهد تا
بتواند به کار در
برنامه ای که پیغام
را نشان داده است
ادامه دهد. در هنگام
نمایش پیغام، فرم
پدر و فرزندهای آن
غیر فعال می باشند.
این حالت پیش فرض می
باشد.
MB_SYSTEMMODAL: مانند MB_APPMODAL است با
این تفاوت که پیغام
پرچم WS_EX_TOPMOST را نیز دارا
می باشد. این حالت
پیغام را بالاتر از
پنجره های دیگر نگه
می دارد. فقط در
شرایطی از آن
استفاده کنید که می
خواهید پیغامی مهم
(مانند: حافظه در حال
تمام شدن است) را
نمایش بدهید. توجه
کنید که این حالت
روی فعالیت پنجره
های دیگر تاثیری
ندارد.
MB_TASKMODAL: هنگام نمایش
پیغام تمام پنجره
های برنامه ی مربوط
را غیر فعال می کند.
5. تنظیمات دیگر:
MB_DEFAULT_DESKTOP_ONLY: مانند MB_SERVICE_NOTIFICATION با
این تفاوت که سیستم
پیغام را فقط روی
زمینه ی پیش فرض
پنجره ی محاوره ای
نمایش می دهد. این
پرچم در ویندوز های
95، 98 و Me کار نمی کند.
MB_RIGHT: متن را راست چین
می کند.
MB_RTLREADING: پیغام را به
صورت راست به چپ و با
سیستم های Hebrew و Arabic نمایش
می دهد.
MB_SETFOREGROUND: سیستم تابع SetForegroundWindow
را برای پیغام فرا
می خواند و پیغام
پنجره ی پیش زمینه
می شود.
MB_TOPMOST: پرچم WS_EX_TOPMOST را برای
پیغام فعال می کند.
در این حالت پیغام
زیر پنجره های دیگر
نمی رود و بالاتر از
آن ها می ماند.
MB_SERVICE_NOTIFICATION: فراخواننده
سرویسی است که کاربر
را از یک رویداد با
خبر می کند. این پرچم
باعث می شود حتی
وقتی هیچ کاربری
وارد ویندوز نشده
است، پیغام نمایش
داده شود.
MB_SERVICE_NOTIFICATION_NT3X: این پرچم
مقدار MB_SERVICE_NOTIFICATION برای
ویندوزNT 3.51 است. از
ویندوز NT 4.0 این پرچم
تغییر کرد.
کد زیر:
void CMessageBoxDlg::OnButton1()
{
MessageBox("You clicked on 'show' button!\nDo you want to
continue?", "<<Attention>>", MB_YESNOCANCEL | MB_HELP |
MB_ICONINFORMATION);
}
این پیغام را
نمایش می دهد.

|
IP: 38.107.191.104 |
Country: United States
|
Browser: Unknown |
OS: Unknown |
|
|