About Forum Sitemap Login Register

Home

C#

VB

Java

C++

Other

Forum

English

Farsi

دوستان:

 

JG Solutions

TechwizWorld

Rishoo Blog

Ranjhaco.110MB

Free Download Software

Anar News & Reviews

Yazdi Programming Co.

Darth Scape
Online Star Wars RPG

Caustic Designs Production

News: (1) 110MB registration is now open, it's time to make your own website on 110MB, one the greatest free web hostings in the world!


C++‎ - ‏جعبه پیغام

کنترل ها

متغیر عضوی

دانلود ها:

نمایش پیغام‏ - 23.87‎ KB

آیا تا به حال در هنگام کار با برنامه ای پیغام 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.

1

2

3

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);

}

 

این پیغام را نمایش می دهد.

 

 

نظر ها

توسط بهاره

در 2008-08-11 06:09:24 GMT

این پست توسط بهاره در 2008-08-11 06:09:24 GMT فرستاده شده

 

ایمیل

خیلی خوب بود. منتظر مقالات بعدی شما هستم

توسط نرگس

در 2008-08-31 17:49:05 GMT

این پست توسط نرگس در 2008-08-31 17:49:05 GMT فرستاده شده

 

وب سایت

سلام
امیدوارم که حالتون خوب باشه
ببخشید کد جبه ی نظراتو میخوام
میشه بیایین تو وبم و واسم ارسال کنید؟
ممنون میشمHappyHappyHappy

توسط نرگس

در 2008-08-31 17:51:50 GMT

این پست توسط نرگس در 2008-08-31 17:51:50 GMT فرستاده شده

 

وب سایت

در به در دنبالشم ولی متاسفانه اون چیزی که میخوام نیست
اگه میشه کمکم کنیدHappyAt Wits' EndAt Wits' End

توسط mohammad

در 2009-01-05 09:24:41 GMT

این پست توسط mohammad در 2009-01-05 09:24:41 GMT فرستاده شده

 

ایمیل

salam

 

اگر دوست دارید می توانید با پر کردن فرم زیر به راحتی نظر خود را ثبت کنید:

نام:

ایمیل:

وب سایت:

 

 

More Emoticons

 

 

کنترل ها

متغیر عضوی

IP: 38.107.191.104

Country: United States

Browser: Unknown

OS: Unknown

@2008 Alamat.110MB programming

Site Statistics:

Powered by 110MB free web hosting