PDA

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



someone
22-09-2006, 19:37
سلام.
یکی دیگه ازDialog هایی که کاربرد بسیار زیادی داره BrowseForFolder هست. که برای استفاده از اون
کلاسی در MFC وجود نداره و از چند structure و چند تابع برای به نمایش دادن این Dialog استفاده میشه.
از این بابت این رو در یه Topic جداگانه قرار دادم چون از MFC استفاده نمیکنیم.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در حقیقت این روش استفاده از Windows SDK هست.این structure در Shell32.Dll قرار داره و پارامتر های لازم رو برای تابع SHBrowseForFolder فراهم میکنه.این تابع باعث نمایش این Dialog میشه.این تابع هم در Shell32.Dll قرار داره وفایل h لازم برای این تابع shlobj.h هست.
روش کار به این صورت هست:
1-یک object1 از BROWSEINFO ایجاد میکنیم.
2-یکobject2 از ITEMIDLIST ایجاد میکنیم.
3-یک object3 از IMalloc ایجاد میکنیم. IMalloc در حقیقت یه COM هست.به طور ساده میشه در بارش گفت که یه Interface برای مدیریت , آزادکردن و تخصیص دادن حافظه هست که ازش استفاده میکنیم.
4-سپس استفاده از تابع CoGetMalloc که اجازه اجرای IMalloc Interface رو میده که برنامه میتونه از مدیریت حافظه استفاده کنه.
5-محتویات object1 رو با 0 مقدار دهی میکنیم.که در حقیقت نوعی initialize کردن این objectهست.
6-Handle پنجره ی کلاس رو در این object قرار میدیم.
7-میتونیم اسمی برای این پنجره انتخاب کنیم.
8-نوبت به استفاده از SHBrowseForFolder میرسه.
9-در آخر کار حافظه ایجاد شده رو آزاد میکنیم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
میتونید از این برنامه در OnBnClick Event یک Button استفاده کنید.
IDC_FOLDERPATHی StaticText هست که اسم وآدرس Folder انتخاب شده در اون برمیگرده.
این ساده ترین روش برای نمایش این پنجره هست. امیدوارم توضیحات واضح باشن.
هر جا نیاز به توضیح بیشتری بود اطلاع بدید.
ممنون.