ايران ويج

نسخه‌ی کامل: كمك در يادگيري ويژوال سي پلاس پلاس
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام.
من مي خواهم ويژوال سي++ ياد بگيرم.
ولي در مفاهيم پايه مشكل دارم.

سئوال اولم اينه كه فرق
mfc
با توابع
api
چيه؟
.
این کارا دیگه قدیمی شده Biggrin
مچت رو گرفتم Biggrin
نقل قول: من مي خواهم ويژوال سي++ ياد بگيرم
شما می خوای ویژوال سی ++ یاد بگیری
شما که  مدیر سی ++   PersianTools هستی
فکر کنم اومدی سایت رو محک بزنی نه ؟ Rolleyes


سلام.
مي دونم شوخي مي كني.
من مطالب تاپيكهاي اينجا را خوندم ديدم افراد با سوادي اينجا هستند گفتم استفاده كنم تا سريع تر ياد بگيرم.
.
معمولا افراد با سواد از پاتوق خود خارج نمي شوند پس بايد ما برويم دنبال اونها.
اعتراف کن که خودشی Biggrin Tongue
براي من مدير و غير مدير و اين فروم و آن فروم مهم نيست.
من فقط به دنبال يادگيري ام.
.
saalek نوشته است:ولي براي من مدير و غير مدير و اين فروم و آن فروم مهم نيست.
من فقط به دنبال يادگيري ام.
حالا شد Biggrin
اینو خوب اومدی
آفرین

امیدوارم بیشتر تو سایت شما رو ببینم
در ضمن امیدوارم از شوخی من ناراحت نشده باشید
سلام دوست عزيز !

MFC به معناي Microsoft Fundation Class است
API به معناي Application Programming Interface است محيطها و پلتفرم هاي گوناگون API هاي مختلفي ارائه مي دهند كه اغلب منظور از API همان API درون ويندوز خودمان است!
API در واقع رابطي است براي برنامه نويسي كاربردي
اگر به طور خاص ++Microsoft VC را در نظر بگيريد به زبان ساده تر API در واقع
مجموعه اي از توابع از پيش نوشته شده است براي دسترسي به لايه هاي پنهانِ سخت افزار و سيستم عامل كه براي كابر به راحتي امكان پذير نيست
اعمالي كه توابع API انجام مي دهند بسيار بنيادين است و در محيطي مثل ويندوز كوچكترين برنامهء ممكنه هم از API استفاده ميكند اما بعضي محيطها لايه هاي نرم افزاري به اين API افزوده اند تا كار با آن كاربردي تر و راحت تر باشد به عنوان مثال :
VCL = Visual Component Library درون دلفي و يا wfc در ++J و يا همين MFC خودمان لايه اي بر روي API ويندوز هستند اگر به سورسِ كدهاي MFC يا VCL نگاه كنيد متوجه استفادهء بسيار از API ويندوز خواهيد شد و در استفادهء موثر از API بسيار چيزها خواهيد آموخت البته MFC از يك لايه بندي كهنه و دست و پا شكسته استفاده ميكند(كه به اعتقاد من مي شد بهتر از اينها طراحيش كرد) و در دشواري دست كمي از API ندارد و البته به خوبي API را از ديد برنامه نوبيس پنهان نكرده (به من خرده نگيريد مايكروسافت كه خدا نيست) در عوض معماري VCL خارق العاده است هر چند عاشق زبان قدرتمند++C هستم اما VCL دلفي را فوق العاده كرده و براي برنامه نويسي كاربردي بهره ور تر از VC , MFC است البته dotNet از همهء اينها بهتره ولي براي بدست آوردن درك عميق از برنامه نويسي و ساختار ويندوز به نظرم VC براي حرفه اي شدن لازمه بگذريم ميرم سر اصل مطلب.

كدام بهتر است؟ MFC يا API ؟
ببينيد اصولاً MFC لايه اي ++Cي است بر روي API ويندوز
برنامه نويسي با MFC يا VCL بسيار راحت تر از سرو كله زدن با توابع عجيب و غريبِ ويندوز است در مورد 10 يا 20 تابع صحبت نميكنيم دهاهزار تابع API داريم بعضي هاشان مثل CreateFontEx  حدود 10 تايي پارامتر ميگيرن اونهم چه پارامتر هايي اغلب اشاره گر يا اشاره گر به اشاره گر به ....!
البته داشتن مهارت در API يك توانايي چشمگير است ولي نوشتن يك برنامه كاملا با استفاده از API با وجود محيطهاي .Net, VCL , MFC وقت تلف كردن
است.
البته توجه كنيد امكان اسفاده از API به طور مستقيم در تمام زبان هاي برنامه نويسي وجود دارد حتي در dotNet و در زبانِ Assembly.
بر خلاف  MFC  كه مخصوص به ++VC است.

معايب API:
  توجه كنيد استفاده از API آنهم به طور مستقيم وابستگي به پلتفرم ايجاد ميكند. اگر مجبور شديد از API استفاده كنيد تابعِ API را در يك Object با دقت Encapsulate (محصوره سازي) كنيد تا اگر فردا خواستيد برنامه تان را در Linux
Compile كنيد مجبور نشويد تمام كد را زير و رو كنيد.
   در ضمن هنگام استفاده از API در محيط dotNet به شناور بودن متغيير هاي dotNet در حافظه و البته استفادهء زيادِ API از اشاره گر ها توجه كنيد.
بايد متغيير هاي dotNetي را كه از حافظهء ديناميك استفاده ميكنند را (اصولاً تمام غير اسكالر ها را) به صورت متغيير هاي Fix شده در حافظه تعريف كنيد محيطها و زبانهاي dotNetي كلمات كليدي براي اين كار دارند مثل اين:
int arr[]= new int[100];0
fixed(int* i = arr) SomeFunc(i);0
برنامهء بالا در #C يك آرايهء عدد صحيح را در حافظه ثابت ميكند تا كارِ تابع SomeFunc با آن تمام شود SomeFunc تابعي وابسته به آدرس آرايه است كه از آدرس براي انديس دهي استفاده ميكند SomeFunc ميتواند يك تابعِ API باشد.

با تشكر از توجه شما سيد سعيد توكليان.
سلام.
ممنون.
توضيحات شما كامل و خيلي مفيد بود.
.