PDA

View Full Version : گفتگو: win32 , mfc



kitten
چهارشنبه 10 تیر 1388, 18:38 عصر
سلام دوستان
یه چند تا سوال داشتم:
1.اول این که win32 یا mfc کدومشون قویتر هستند تو برنامه نویسی؟و یادگیری کدوم اسونتره؟
2.آیا هربرنامه ای که با mfc نوشته می شه می تونیم ان را با win32 بنویسیم؟

Nima_NF
چهارشنبه 10 تیر 1388, 19:14 عصر
win32 API اصلی ترین کتابخانه ویندوز هست و هسته یا قلب ویندوز هست.

MFC همان win32 در قالب کلاس هایی هست، امکانات اتومات کدنویسی و بر اساس wizard آن باعث می شود تا در بسیاری موارد مجبور نباشید همه چیز را با کدنویسی بنویسید.
کلاس های MFC محدویدیت هایی دارد و همه چیز را پیاده سازی نکرده است، اما محدودیت خاصی در سطح application برای شما ایجاد نمی کند، چون مستقیم لابلای کدها می توانید از win32 API استفاده کنید.

امکانات پیشرفته دیگری مانند درایورنویسی، Service ها و غیره مختص win32 API هستند که بحث هایی فراتر از application هستند.

در سال های اخیر مایکروسافت تلاش می کند که امکاناتی ویژه و فقط مختص MFC نیز عرضه کند، مانند امکانات skin Office 2007 و منو های جدید آن یا skin visual studio ، ارتباط راحت تر با .NET و ...

برای یک نمونه کوچک تفاوت در سختی یا راحتی کار با آن ها، ابتدا یک دیالوگی را به شکل visual تولید کنید:
در MFC با wizard کدهای اولیه برای دیالوگ ساخته می شود.
در win32 خودتان باید تابعی با فرمت مشخص بنویسید و برای دریافت اطلاعات کنترل ها دستی نام آن پیام را در switch-case قرار دهید.

در کل MFC از لحاظ یادگیری راحت تر نیست (چون کم کم باید بخش هایی از win32 را نیز یاد بگیرید )، اما وقتی یادگرفتید برنامه نویسی را نسبت به win32 راحت تر و سریع تر می کند.

pswin.pooya
چهارشنبه 10 تیر 1388, 19:51 عصر
Win32 API مخفف کملمه Windows 32 Application Programming Interface هستش و همنظور که از اسمش پیداست یعنی دابط برنامه نویسی ، برنامه های کاربردی ویندوز 32 بیتی. کلا به تمامی کتابخانه ها و موارد دیگه داخل ویندوز که یه رابط رو برای برنامه نویسان فراهم کرده باشه Win 32 API میگن.

MFC اگر اشتباه نکنم مخفف microsoft framework for C هستش که یک کتابخونه هستش برای نوشتن برنامه های ویندوز. این کتابخونه بعضی از موارد رو برای کار کردن Win32 استفاده یکنه.

رابط بصری MFC:
در فایلهای اجرایی ویندوز که اصطلاحا pe نامیده میشه قسمتی به اسم resource وجود داره که این قسمت مواردی رو مثل دیالوگها، آیکنها و ... رو نگهداری میکنه. علت وجود این قسمت برای پشتیبانی از محلی سازی ( localization) داخل ویندوز هستش. این قسمت همراه برنامه توسط یه کامپایلر مخصوص برای کامپابلر ریسورس ترجمه میشه و با اصل برنامه لینک داده میشه. در محیط ویژوال استادیو زمانی که از mfc استفاده می کنید یک ادیتور بصری برای ادیت این ریسورسها رو در اختیارتون قرار میده که به کمک اون میتونید سریعتر کارها رو انجام بدبد. این قسمت هیچ ربطی به mfc نداره و حتی شما اگه Win32 App رو هم انتخاب کنبد میتونید ریسورسها رو ویرایش کنید و از اونها استفاده کنید.

بهترین کتاب که برای کار با win32 API و یادگیری ساخت برنامه های ویندوز به صورت حرفه ای پیشنهاد میشه کتاب Windows 2000 API superbible هستش. البته توجه به این نکته هم لازمه که API ویندوز از ویندوز ویستا به بعد یه تحول کلی هم داشتن ولی سازگاری خودشون رو با تمام ویرایش های قبل حفظ کردن. برای یادگیری شیوه نوشتن برنامه های ویندوز یه کتاب هم مایکروسافت داره که نحوه نوشتن برنامه ها رو یاد میده و فوقالعاده مفیده که نکات زیادی رو هم آموزش میده.

شما هر برنامه ای رو که با mfc بنویسید به صورت مستقیم میتونید اون رو با win32 API هم بنویسید پون mfc تنها یک لایه هستش که روی win32 AIP کشیده شده که اون رو راحتر کنه.

clover
شنبه 13 تیر 1388, 01:10 صبح
MFC مخفف عبارت Microsoft Foundation Class است . کتابخانه MFC شامل مجموعه ای از ابزار های برنامه نویسی شی گرا برای ایجاد انحصاری برنامه های ویندوزی 32 بیتی می باشد . این کتابخانه تمام توابع ویندوزی رویه گرای طبیعی را در خود دارد و از نوار های کنترل ، صفحه خاصیت ها ، OLEO ، کنترل های ActiveX و موارد بسیار زیاد دیگری پشتیبانی می کند .به علاوه پشتیبانی از پایگاه داده برای دامنه گسترده ای از منابع پایگاه داده از جمله DAO و ODBC ارائه شده است . MFC همچنین امکان ایجاد برنامه های اینترنتی را هم در ++C فراهم میکند .

کتابخانه MFC ، آبجکت هایی را در اختیار برنامه نویسان قرار می دهد که استفاده از آنها آسان است . ویندوز از ابتدای پیدایش خود ، بسیاری از اصول طراحی برنامه نویسی شی گرا را در چارچوب یک زبان غیر شی گرا مثل C پیاده کرده است . ترکیب ++C و ویندوز یک رابطه طبیعی است که می تواند از ویژگی هایی شی گرایی بهره کامل ببرد .تیم ایجاد و توسعه MFC ، پیاده سازی جامعی از API ویندوز را طراحی کردند .این کتابخانه ی ++C ، ساختار داده و توابع API را در یک گروه از کلاس های قابل استفاده مجدد قرار داده است . (به زبان ساده می توان گفت MFC از بسط و بهینه سازی API ویندوز برای برنامه نویسی شی گرا ساخته شده .)

کتابخانه های کلاسی مثل MFC نسبت به کتابخانه های توابع معمولی که توسط برنامه نویسان C مورد استفاده قرار می گیرند ، مزایای زیادی دارند از جمله :
حذف تداخل اسامی توابع و متغیر ها کپسوله سازی کد و داده ها در کلاس وراثت به نظر می رسد که کلاس های به دست آمده ، بسط و گسترش یافته طبیعی زبان می باشند .


با استفاده از کتابخانه MFC ، کد لازم برای ایجاد یک پنجره به تقریبا یک سوم کد برنامه ی رویه گرا کاهش می یابد . این به برنامه نویس امکان می دهد تا وقت کمتری را صرف ارتباط با ویندوز کرده و وقت بیشتری را صرف ایجاد کد برنامه خود کند .

clover
شنبه 13 تیر 1388, 01:32 صبح
کتابخانه کلاس ها برای ویندوز ، توسط سایر شرکت های تولید کننده کامپایلر هم ارائه می شود ، ولی مایکروسافت ادعا می کند که کتابخانه MFC چند مزیت واقعی دارد .

یک طراحی جامع برای مدیریت exception ها که کد را کمتر در معرض عدم موفقیت قرار می دهد . از "خارج از محدوده حافظه" () و غیره ، پشتیبانی شده است امکانات تشخیصی بهتر از طریق قابلیت ارسال اطلاعات در مورد آبجکت ها به یک فایل ، همچنین قابلیت اعتبار سنجی متغیر های عضو نیز وجود دارد . پشتیبانی کامل از توابع ، کنترل ها ، پیغام ها ، توابع مقدماتی گرافیکی GDI (Graphics Device Interface) ، منوها و کادر های محاوره ای ویندوز . تعیین نوع داده در زمان اجرا . این مطلب امکان می دهد که وقتی یک نمونه از کلاس ایجاد می شود ، بتوان یک فیلد را به صورت پویا دستکاری کرد . حذف بسیاری از دستورات switch/case که یک دلیل برای ایجاد خطا بودند . تمام پیغام ها به توابع عضو یک کلاس نگاشت می شوند . این نگاشت مستقیم پیغام - به - متد ، برای تمام پیغام ها وجود دارد . کد کوچک با پیاده سازی سریع . توضیح اینکه کتابخانه های MFC فقط میزان کمی بار اضافی از نظر کد آبجکت اضافه میکند و تقریبا به سرعت برنامه های ویندوزی معمولی C اجرا می شود . پشتیبانی از Component Object Model (COM) . استفاده از همان قرار داد نام گذاری API ویندوز . بنابر این کار یک کلاس بلافاصله از روی اسم آن مشخص می شود .


و در کل نظر من اینست که MFC فوق العاده قوی تر ، مدرن تر و آسان تر از API ویندوز است !
یادگیری آن به هیچ وجه ضرر یا دوباره کاری نیست . گرچه در کنار آن آشنایی با API از الزامات است .