PDA

نسخه کامل مشاهده نسخه کامل : Windows Common Dialog



someone
22-09-2006, 03:40
سلام.
این topic درباره ی Common Dialog هست. که یکی از دوستانم از من خواسته بود و گفتم شاید بد نباشه در این جا مطرح بشه چون دارای کاربرد های زیادی هستند مخصوصا در برنامه نویسی تحت Windows.
به طور خیلی ساده درباره ی این Dialog ها میشه گفت که از Dialog های استاندارد Windowsهستند که همه شما با اونها آشنا هستید.که شامل Dialog های زیر میشه وهمگی در COMMDLG.DLL قرار دارند.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

که برای استفاده از اونها چند راه وجود داره.

1- استفاده از Windows SDK که بر گرفته از Software Development Kit هست.
2- استفاده از OCX یا کنترل این Dialog ها که معمولا در Net. استفاده میشه.
3- استفاده از MFC که همه کسانی که با VC برنامه مینویسن باهاش آشنا هستند. که بر گرفته از Microsoft Foundation Class هست.

در این topic از روش سوم استفاده میشه.
در MFC اینDialog ها ازکلاس CCommonDialog مشتق میشن که این کلاس مشتق شده از کلاس
CDialog هست.که نهایتا همه اینها مشتق شده از کلاس CWnd هستند. بنابراین میتونیم از این کلاس ها استفاده کنیم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که پرکاربرد ترینشون رو در اینجا مطرح میکنم.

1-CFileDialog
از پرکاربردترین Dialog هست و همه شما با اون آشنا هستید. وقتی که میخواید یک File رو Open کنید یا
اون رو Save کنید این Dialog ظاهر میشه. این کلاس شامل توابع زیر هست:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و توابع دیگه که هر کدام کار ویژه انجام میدن که پرکاربرد ترینشون رو اسم بردم.
CFileDialog سازنده یا Constructor هست. وبه شکل زیر استفاده میشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

آرگومان اول اگه TRUE باشه FileOpenDialog نمایش داده میشه و اگه FALSE باشه FileSaveDialog
نمایش داده میشه.
آرگومان دوم پسوند پیش فرض رو نشون میده.
آرگومان سوم اسم file ی رو که در textbox این Dialog قرار میگیره بر میگردونه.
آرگومان چهارم ترکیبی از Flag هاست که اجازه میده Dialog رو به دلخواه خودتون در بیارید.
آرگومان پنجم باعث ایجاد یه filter میشه در نتیجه ی اون در Dialog تنها file هایی که شما میخواید رو نشون میده.
آرگومان ششم هم یک pointer به parent این DialogBox هست.
خب.حالا با یه مثال قضیه روشن تر میشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در اینجا اگه مقدار برگشتی از DialogBox برابر IDOK باشه یعنی که File ی انتخاب شده و اسم اون file
در m_sFileName قرار میگیره. برای استفاده از این برنامه کافی این رو در OnBnClick Event یک
Button قرار بگیره.


2-CFontDialog
با این Dialog هم آشنا هستید.وقتی بخواید در برنامه ای Font ی رو انتخاب کنید این Dialog ظاهر میشه.و
اینDialog لیست Font هایی که درsystem شما نصب شده رو نشون میده. این کلاس هم دارای توابعی هست از جمله:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و توابع دیگه که هر کدام کار ویژه انجام میدن که پرکاربرد ترینشون رو اسم بردم.
این کلاس هم دارای Constructor هست که به شکل زیر استفاده میشه.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
آرگومان اول یه pointer یه LONGFONT هست. که اجازه میده مشخصات Font رو مقدار دهی کرد.
آرگومان دوم یه Flag هست که مثلا میتونه اجازه بده که کاربر underline رو برای font مورد نظر انتخاب کنه.
آرگومان سوم یه Pinter به DC یا Device Context هست.
آرگومان چهارم هم مثل CFileDialog هست.
این کلاس یه structure داره به نام m_cf که برای Customize کردن شیئ این کلاس به کار میره.
خب بازم میریم سر یه مثال:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

که مثل قبل میتونه در OnBnClick Event یه Button قرار بگیره.

3-CColorDialog
با این هم آشنا هستید که برای انتخاب رنگ ازش استفاده میشه. این Dialog هم از پرکاربرد ترین
Dialog هاست. این کلاس دارای تعداد کمی تابع هست. که به شکل زیر تعریف میشن:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این کلاس یه structure داره به نام m_cc که برای Customize کردن شیئ این کلاس به کار میره.
این کلاس هم دارای Constructor هست که به شکل زیر استفاده میشه.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
آرگومان اول رنگ پیش فرض رو انتخاب میکنه.
آرگومان دوم هم یه Flag هست برای Customize کردن DialogBox مربوط به این کلاس
آرگومان سوم هم مثل CFileDialog هست.
بازم یه مثال که بهترین راه برای یادگیری هست:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

که مقدار رنگ برگشتی در CurColor قرار میگیره.CurColor به صورت public تعریف شده.
من برای رنگ کردن یه PictureBox با این ID از این کد استفاده کردم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این سه مورد از این Dialog ها بود.اگه خواستید ادامه ميدم.
سعی کردم ساده و روشن وخلاصه توضیح بدم.اگه خوب توضیح ندادم به بزرگواری خودتون میبخشید.
هر جا کدها نیاز به توضیح داشت اطلاع بدید.
ممنون.