با توجه به سوالات مکرر برخی از کاربران و خصوصا دانشجویان جدید، تصمیم گرفته شد تا توضیحاتی درباره روش های نوشتن برنامه های گرافیکی در زبان C++‎/C بیان شود و برخی از تاپیک های پرداخته شده به این موضوع نیز معرفی شوند.


مقدمه:

اکنون بیش از 15 سال از انتشار کامپایلرهایی همچون ++Turbo C برای توسعه در محیط DOS می گذرد و در طی این سال ها امکانات و کتابخانه های بسیاری به زبان های C و ++C اضافه شده است از جمله STL در ++C که بسیاری از الگوریتم های معروف و پرکاربرد مانند پشته ، لیست پیوندی ،انواع صف ، انواع مرتب سازی ها و غیره را بدون نیاز به پیاده سازی در اختیار شما قرار می دهد که برای بهره مندی از این امکانات می بایست از کامپایلرهای جدید و به روز 32/64 بیتی استفاده کرد، از جمله:
++Visual C و ++minGW/Dev C (کد باز و رایگان) و C++‎Builder و ...

نکته: امروزه در محیط های آموزشی سراسر دنیا از نسخه های رایگان این کامپایلرها و یا کامپایلرهای کد باز به عنوان جایگزینی برای ++Turbo C استفاده می کنند.

سوال- آیا می توان از توابع گرافیکی قدیمی graphics.h در محیط های جدید برنامه نویسی مانند Visual C++ /Borland C++‎builder / gcc / mingw و ... استفاده کرد؟

خیر، این توابع از جمله توابع 16 بیتی قدیمی و منسوخ شده بورلند می باشند که برخلاف تفکر برخی از نوآموزان، جزئی از این زبان نیست.

لذا برای توسعه های جدید، چندین راه وجود دارد:

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

در ویندوز دوستان می توانند با توابع گرافیکی GDI و +GDI از طریق شیوه های win32 و MFC با کامپایلرهای ++VC و ++DevC و یا از طریق VCL با کامپایلر C++‎Builder این کار را انجام دهند.
توجه کنید که با مطالعه بخش گرافیکی یکی از لینک های زیر در مدتی بین دو هفته تا یک ماه قادر به ایجاد برنامه های گرافیکی، بازی ساده گرافیکی و همین طور کار با mouse و keyboard خواهید بود:

برای win32 (سطح پایین ،اما یادگیری با مراجع زیر بسیار راحت می باشد):
Win32 Programming - FunctionX
theForger's Win32 API Tutorial

برای MFC (کمی ساده تر از مورد فوق)
http://www.functionx.com/visualc

برای VCL
C++ Builder


-------------------------------
روش 2) استفاده از توابع کنسولی مایکروسافت برای command prompt ویندوز ، لیست این توابع در لینک زیر موجود می باشد:
لیست توابع کنسولی مایکروسافت

در این روش شما باید معادل توابع graphics.h را که در محیط Turbo C و کامپایلر های سری قدیم بورلند وجود داشت را با توابع 32 بیتی کنسولی مایکروسافت پیاده سازی کنید، به عنوان مثال برای gotoxy و clrscr لینک زیر را مشاهده کنید:
معادل توابعی مثل gotoxy و clrscr در ++VC

توجه به این مورد ضروری می باشد که محیط command prompt ویندوز محیطی کاملا متفاوت از محیط 16 بیتی DOS می باشد و نباید انتظار داشته باشید که تمامی امکانات 16 بیتی قدیمی توسط این کامپایلرها به همان شکل در اختیار شما قرار گیرد، از جمله رسم اشیاء گرافیکی همانند قبل در این روش امکان پذیر نیست و جداول و اشکال ساده می بایست توسط خطوط و کارکترها پیاده سازی شوند، اما این قابلیت در اختیار شما قرار می گیرد که بتوانید از اکثر توابع پیشرفته سیستم عامل در محیط کنسول استفاده کنید.

لینک زیر شامل مثال ها و آموزش های کامل در زمینه استفاده از همین توابع کنسولی win32 می باشد، پس قبل از هر کاری ابتدا نگاهی به نمونه های پیاده سازی شده در این سایت بیاندازید:
adrianxw.dk Win32 Tutorials Home

-------------------------------
روش 3) روش ساده تر از مورد قبل، استفاده از کتابخانه های 32 بیتی آماده غیر استاندارد و معادل graphic.h می باشد که برخی از آن ها open source (کد باز) نیز می باشد، مانند WinBGI که می توانید فایل های آن را از صفحه زیر دانلود کرده و استفاده کنید:
فایل های مربوط به WinBGI به همراه یک نمونه مثال

توجه کنید که این کتابخانه از توابع گرافیکی win32 استفاده می کند و برای نمایش آن ها پنجره سیاه دیگری همانند کنسول باز می شود که قادر هستید در آن اشکال گرافیکی را همانند برنامه های ویندوز به سادگی برنامه های گرافیکی Turbo C رسم کنید.

-------------------------------
روش 4) آخرین و بدترین روش برگشتن به محیط قدیمی ++Turbo C و استفاده از همان توابع گرافیکی graphics.h می باشد که در برخی کتاب ها از جمله کتاب C جعفرنژاد قومی به آن پرداخته شده است. (البته امیدوارم به عنوان یک دانشجو و یا حتی کسی که می خواهد در حد پروژه های ساده با این زبان آشنا شود این گزینه را انتخاب نکنید)

از جمله تاپیک های پرداخته شده به این مورد که می توانید نمونه کدهایی برای Turbo C پیدا کنید:
برنامه هایی به زبان C
باز کردن یه فایل BMP در TC تحت داس
کار گرافیکی با C یا ++C
یجاد منو(menu) گرافیکی در سی

مجددا تاکید می کنم به عنوان یک برنامه نویس مورد 4 را فراموش کنید.