PDA

View Full Version : مبتدی: فرق بین WIN32 و windows forms



raminlich
دوشنبه 05 خرداد 1393, 22:25 عصر
سلام به همگی
دقیقا فرق بین این دوتا چیه انگار دوتاشون یه کاری انجام میدن ولی win32 یکم باید حوصله به خرج بدیمو کد نویسی کنیم
نمی دونم چرا وقتی تو vs با c++ یه فرم برام میاره وقتی میزنم Veiw code کداش یکم گیج کنندس کداش بیشتر شبیه C# :گیج:

کامبیز اسدزاده
دوشنبه 05 خرداد 1393, 22:39 عصر
سلام به همگی
دقیقا فرق بین این دوتا چیه انگار دوتاشون یه کاری انجام میدن ولی win32 یکم باید حوصله به خرج بدیمو کد نویسی کنیم
نمی دونم چرا وقتی تو vs با C++‎‎‎‎ یه فرم برام میاره وقتی میزنم Veiw code کداش یکم گیج کنندس کداش بیشتر شبیه C#‎‎‎‎ :گیج:

:قهقهه: آدم وحشت میکنه با اون کد ها نه ؟ :)) :لبخند:
طوری نیست...

به طور خلاصه توضیح میدم به طور کلی Win32 برنامه نویسی سطح پایین هستش (Low level) و WinForm یا بهتره بگیم CLR برنامه نویسی سطح بالا هستش همون (High level)

فرقشون چیه ؟ در حالت سطح پایین شما از برنامه نویسی رسمی و اصیل C++‎‎‎ استفاده میکنید و در حالت سطح بالا از C++‎‎‎ همراه با کتابخانه های دات نتی استفاده میکنید که فقط منحصربفرد مایکروسافتی هستش و هیچ جای دنیا CLR رو در برنامه نویسی C++‎‎‎ به عنوان کد نویسی رسمی نمی شناسند تنها میزیتی که داره اینه اگه شما هدفتون برنامه نویسی تحت .NET هستش میتونید از این گزینه یعنی C++‎‎‎/CLR استفاده کنید که طراحی باهاش راحته ولی در این حالت هم C#‎‎‎ بهترین انتخاب هستش.

raminlich
دوشنبه 05 خرداد 1393, 22:55 عصر
خوب حالا شما کودومشو پیشنهاد می کنید برای من که تازه واردم به نظرت من اول یکم سطح پایین کار کنم بعد برم رو سطح بالا
اون QT که گفتین همون C++ رو در سطح بالا باش می نویسن دیگه؟؟
الان من یه سری pdf از آموزش های win32 گرفتم انگلیسیه راستش مشکلی تو معنی کلمات ندارم ولی یه سری چیز های هست برام گنگه
مثلا NULL و HWND
اتفاقا خوب هم توضیح میده ولی بعضی هاشو نمی فهمم:گیج:

کامبیز اسدزاده
دوشنبه 05 خرداد 1393, 23:11 عصر
خوب حالا شما کودومشو پیشنهاد می کنید برای من که تازه واردم به نظرت من اول یکم سطح پایین کار کنم بعد برم رو سطح بالا
اون QT که گفتین همون C++‎‎‎‎ رو در سطح بالا باش می نویسن دیگه؟؟
الان من یه سری pdf از آموزش های win32 گرفتم انگلیسیه راستش مشکلی تو معنی کلمات ندارم ولی یه سری چیز های هست برام گنگه
مثلا NULL و HWND
اتفاقا خوب هم توضیح میده ولی بعضی هاشو نمی فهمم:گیج:

اشتباه نکنید ! بزارید ابتدا در رابطه با سطح پایین بودن یا بالا بودن روشنتون کنم...
وقتی میگیم سطح پایین منظورمون این نیست که برنامه نویسی در این روش سطحش پایینه یا ضعیفه اتفاقا برعکس ! سطح برنامه نویسی سخت هست و Performance بالاتری وجود داره حال با این تفاوت که برنامه نویسی سطح بالا راحتر هستش یعنی کد ها خیلی خواناتر و قابل فهم تر هستش حالا بخوام من توضیح کلی بدم در رابطه با این موضوع باید کلی تجزیه تحلیل کنم که خوشبختانه قبلا از اساتید محترم توضیحاتشو داده اند که منم در یک نکته اشاره میکنم برنامه نویسی به صورت سطح پایین میشه همون Native یا بومی نویسی و برنامه نویسی سطح بالا میشه Managed یا همون مدیریت شده که در تاپیک زیر توضیحات به طور کلی داده شده است.

http://barnamenevis.org/showthread.php?94381-%D9%85%D9%82%D8%A7%D9%84%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-C-C-%D8%A7%D8%B2-%D9%86%D9%88%D8%B9-Native-%DB%8C%D8%A7-managed-%D8%9F&highlight=Managed+Native

در رابطه با Qt هم باید بگم که Native هستش و مواردی چون HWND و .. از API ها و توابع انحصاری سیستم عامل ویندوز هست که برای کار با Window ها استفاده میشه که شما برای شروع کار نباید همه این موارد رو در نظر بگیری اینطوری کارت سخته !
پیشنهاد میکنم مبانی C++‎‎‎ رو تا جایی که میتونید درک و سپس توسط یکی از کتابخانه های Qt یا wXwidgets شروع به ساخت و توسعه برنامه کنید.

هزاران بار گفتم و بازهم میگم همه جا میگم اینو سراغ C++‎‎‎/CLR یا این MFC نرید اقا نرید دیگه فردا سرتون میخوره به سنگ اونوقت میگید چرا نگفتین ! :D در برنامه نویسی C++‎‎‎ برترین کتابخانه هایی که آینده خوبی هم دارند همین Qt و wXwidget هستند البته نا شکری نباشه کتابخانه های POCO و همینطور Boost هم جای خود دارند ! میتونید از همشون در پروژه ها در صورت لزوم استفاده کنید.

موفق باشید.

raminlich
سه شنبه 06 خرداد 1393, 00:03 صبح
مبانی C++ همون فصل های بود که خودت گفتی؟؟

کامبیز اسدزاده
سه شنبه 06 خرداد 1393, 00:12 صبح
مبانی C++‎ همون فصل های بود که خودت گفتی؟؟

بله از مبانی و مفاهیم اولیه و تا حالت کاربردی و پیشرفته اگر سلامت باشیم ادامه خواهیم داد.
البته بازم میگم بهترین منبع http://cplusplus.com هستش سعی کنید از هر سایت و منبعی استفاده کنید و مفاهیم رو مقایسه و بر روی پروژه های خودتون پیاده سازی کنید.
برنامه نویسی مخصوصا C++ طوریه که تا روی پروژه پیاده نکنید فهمش کمی مشکله حتی بعضی فراموش هم میشود.

pars1376
سه شنبه 06 خرداد 1393, 09:52 صبح
هزاران بار گفتم و بازهم میگم همه جا میگم اینو سراغ C++‎‎‎‎/CLR یا این MFC نرید اقا نرید دیگه فردا سرتون میخوره به سنگ اونوقت میگید چرا نگفتین ! :D در برنامه نویسی C++‎‎‎‎ برترین کتابخانه هایی که آینده خوبی هم دارند همین Qt و wXwidget هستند البته نا شکری نباشه کتابخانه های POCO و همینطور Boost هم جای خود دارند ! میتونید از همشون در پروژه ها در صورت لزوم استفاده کنید.

موفق باشید.

سلام
ذلیل این که میگید از mfc استفاده نشه چیه؟
و این که میشه بیشتر راجب C++/CLR و QT توضیح بدبن؟ :متفکر:

کامبیز اسدزاده
سه شنبه 06 خرداد 1393, 10:08 صبح
سلام
ذلیل این که میگید از mfc استفاده نشه چیه؟


من به طور کامل تاکید نمیکنم که از MFC استفاده نشه هرکسی یه سلیقه و یه هدفی داره ولی در کل راجب MFC بخوام صحبت کنم باید بگم که کتابخانه های تحت ویندوز و انحصاری مایکرویافت هستند و چون C++‎‎‎ زبانی هست که در ذات اصلیش هیچگونه وابسنگی پلتفرمی وجود نداره به همین خاطر پیشنهادمون اینه که از کتابخانه هایی استفاده کنید که دست برنامه نویس برای کامپایل و اجرا بر روی همه ایستگاه ها باز هستش.

به عنوان مثال برنامه نوشته شده با MFC فقط روی ویندوز قابل اجراست چون Microsoft Foundation Class Library برای شما API هایی فراهم میکنه که بهتر روی ویندوز برنامه نویسی رو انجام دهید و به طور گسترده روی دیگر پلتفرم ها معرفی نشده است.

اگر شما برنامه نویسی روی ویندوز رو دوست دارین و هدف دیگه ای ندارید خب بد نیست از MFC استفاده کنید! منکرش نیستیم :لبخندساده:


و این که میشه بیشتر راجب C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎‎‎‎‎‎‎/CLR و QT توضیح بدبن؟ :متفکر:


و اما در رابطه با CLR که مخفف Common Language Runtime هستش توضیحات کافی در تاپیک زیر داده شده است :

http://barnamenevis.org/showthread.php?94381-%D9%85%D9%82%D8%A7%D9%84%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-C-C-%D8%A7%D8%B2-%D9%86%D9%88%D8%B9-Native-%DB%8C%D8%A7-managed-%D8%9F&highlight=Managed+Native

ولی به طور خلاصه بازهم میگم CLR نوعی ماشین مجازی یا VM هستش که توسط شرکت مایکرویافت ارایه شده تا به مدیریت فریمورک .NET بپردازه حالا اینکه در C++‎‎‎ برای شما قابلیت این رو هم فراهم میکنه تا از دات نت استفاده کنید خیلی خوبه ولی متاسفانه و بازهم متاسفانه کد نویسی Native نیستش و یه چیز من در آوردی از طرف مایکروسافت هستش یعنی یه جور دستکاری هایی که من برنامه نویس ۱۰۰ سال هم بگذره قبولش نخواهم کرد برای مثال مراجعه کنید به سایت های رسمی C++‎‎‎ کلا از معرفی تا تولید در رابطه با Native بحث شده و تمام موارد از قبیل MFC / CLR / WIN32 و ... همشون دست نشسته های MS هستند که به نحوی برنامه نویس هارو قانع میکنه که روی ویندوز با چنین کتابخانه های فراهم شده مخصوص ویندوز برنامه نویسی کنند و این یک اجبار نیست و از نظر من هی مزیتی بهتری نسبت به کتابخانه های رسمی و عمومی C++‎‎‎ یعنی Qt و ... ندارند.

در رابطه با Qt هم بگم که QT نه درستش Qt هست ! اینم مثل MFC یک نوع کتابخانه برای C++‎‎‎ هستش که قابلیت های بسیار زیادی رو در طراحی و پیاده سازی برنامه ها فراهم میکنه و از مزیت های برتر این کتابخانه میتونم به نوع سبک طراحی و فناوری های QML و بهتر از آن به قابلیت کامپایل و اجرا بر روی تقریبا تمامی پلتفرم ها اشاره کنم که در نوع خودش بی همتاست.

برای آشنایی با Qt هم تاپیکی ایجاد کردم قبلا توضیحات مفصلی داده شده است : http://barnamenevis.org/showthread.php?436304-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%88-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-C-%E2%80%8E%E2%80%8E-Qt-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85

pars1376
سه شنبه 06 خرداد 1393, 16:12 عصر
فکر کنم mfc وابشته به .net نیست، درسته؟ یا اشتباه؟:متعجب:

کامبیز اسدزاده
سه شنبه 06 خرداد 1393, 17:35 عصر
فکر کنم mfc وابشته به .net نیست، درسته؟ یا اشتباه؟:متعجب:
بله MFC وابسته به دات نت نیست CLR وابسته به دات نت هستش در کل MFC کتابخانه های مجزایی به صورت Native از طرف مایکروسافت هستش.
هر برنامه ای که شما با دات نت پیاده میکنید Managed است ولی در MFC چنین نخواهد بود کد هارو به صورت Native مینویسید.

اینجارو ببینید :‌http://en.wikipedia.org/wiki/Microsoft_Foundation_Class_Library