بایگانی

بایگانی برای فوریه, 2009

برنامه‌نویسی gtk در زبان برنامه نویسی C

فوریه 25, 2009 kruxer 2 نظر

چند وقته که پستی نزدم گفتم توی این چند روزه تعطیلی یه سری چیز میز بنویسیم بهمون نخندن :D

چند ماهی میشه که برنامه‌نویسی با زبان C رو شروع کردم.تا اینجا که ازش خوشم اومده و امیدوارم که بتونم ادامش بدم.اما چیزی که منو جذبش کرده اینه که خیلی راحت می‌تونم توش برنامه‌ی گرافیکی بنویسم.چون ما گنوم‌ایی هستیم که تعصب داریم رو گنوم و از کی دی ای متنفریم دیدم که GTK رو یاد بگیرم خیلی خوبه.اولش یه کمی سخت بود اون مبحث سیگنال‌ها!!اما اگه یاد بگیریم خیلی راحت می‌تونیم برنامه‌ی گرافیکی بنویسم :P

اجازه هست؟ :-/

اجازه بدی ندی شروع می‌کنم :D.بزارید یه مثال بزنم بعد به توضیح هر کدوم می‌پردازم :P

http://paste.ubuntu.com/122853/

فکر کنم یه چیزایی گرفتی….هان؟

اگه نگرفتی هم مهم نیست الان میگم..خط اول هدر gtk رو به برنامه معرفی می‌کنه!این هدر دقیقا توی مسیر زیر هستش…

/usr/include/gtk-2.0/gtk/gtk.h

خب پیداش کردید؟اگه توش رو هم نیگا کنید همش include شده.دیدید؟

خط بعد که تابع اصلی رو برای ما باز می‌کنه

خط سوم برای مقداردهی اولیه به کتابخونه استفاده میشه که تنظیمات اولیه رو برای ما انجام میده.بنابراین توی همه‌ی برنامه‌هایی که می‌نویسید باید این خط وجود داشته باشه.نه؟

توی خط چهارم ما یه اشاره‌گر از نوع GtkWidget درست می‌کنم..(به کوچیکی و بزرگی حروف دقت کنید)

اسمش که معلومه window هستش.اما…این تابع می‌تونه آدرس یه شئ رو از همون نوع رو دریافت کنه.مگه C شئ گراست؟خب gtk با استفاده از کتابخونه‌ی Gobject این خاصیت رو پیدا کرده…

بیخیال.بریم خط بعدی.توی خط پنجم به اشاره‌گر widnow آدرس یه شئ یعنی یه پنجره رو بهش میدیم.

در خط بعدی بهش می‌گیم که اون اشاره‌گر یعنی window رو بهمون نشون بده.کار خوبیه،نه؟

اما خط آخر برنامه.وقتی برنامه به اینجا میرسه یه خواب میره.در حقیقت یه حلقه‌ی بینهایت برامون اجرا می‌کنه.تا رویداد‌های برنامه مانند کیبرد و کلیک موس رو برامون دربیاره.اگر هم اون برنامه‌ای که بالا نوشتیم رو دقت می‌کردید اگر روی دکمه‌ی ضربدر کلیک کنید تا از برنامه خارج بشه درسته صفحه‌ی گرافیکی از بین میره اما همچنان از توی کنسول در حال اجراست.در پست‌های بعد طریقه‌ی خارج شدن از این حلقه رو هم می‌گم.در حقیقت تابع‌ای اضافه میشه برای این کار.فکر کنم توی همه‌ی برنامه‌های که با GTK نوشته میشن وجود داشته باشه.

خب حالا نمی‌دونید چه جوری اون برنامه‌ی بالا رو کامپایل کنید؟اشکالی نداره منم نمی‌دونستم :P

gcc `pkg-config –cflags –libs gtk+-2.0` source_file.c -o dest_file

دقت کنید که برنامه رو با پسوند .c ذخیره کنید!

خب خسته نباشید!

یه عکس هم اینجاست…

gtk_screenshot_session1

Categories: Uncategorized