يا! أريد أن أبدأ في برمجة واجهة المستخدم الرسومية بلغة C. لقد قمت للتو بتثبيت GTK 3 على نظام Mac. أعلم أن لغة C ليست عادةً أول ما يتبادر إلى ذهني عندما يفكر المرء في واجهة المستخدم الرسومية، ولكني أرغب في تجربتها والاستمتاع بقليل من المرح. هل يمكنك أن تكتب لي نموذجًا لتطبيق GTK وملف makefile، من فضلك؟
system
يا! أريد أن أبدأ في برمجة واجهة المستخدم الرسومية بلغة C. لقد قمت للتو بتثبيت GTK 3 على نظام Mac. أعلم أن لغة C ليست عادةً أول ما يتبادر إلى ذهني عندما يفكر المرء في واجهة المستخدم الرسومية، ولكني أرغب في تجربتها والاستمتاع بقليل من المرح. هل يمكنك أن تكتب لي نموذجًا لتطبيق GTK وملف makefile، من فضلك؟
user
بالتأكيد! لنقم بإنشاء نموذج تطبيق يأخذ أول وسيطة غير اسم البرنامج من سطر الأوامر، ويعرض هذا النص في النافذة. أولاً، تأكد من تثبيت GTK+ 3، وهو ما يمكن القيام به من خلال Homebrew: Brew install gtk+3

gtkapp.c:
#تشمل <stdio.h>
#تشمل <gtk/gtk.h>

print_text باطل ثابت (GtkWidget *widget، بيانات gpointer)
{
  printf("%s\n", (char*) data);
}

الحرف الأول الفراغي الثابت (GtkApplication *app, gpointer user_data) {
  GtkWidget *window;
  GtkWidget *button;
  GtkWidget *button_box;

  window = gtk_application_window_new(app);
  gtk_window_set_title(GTK_WINDOW(window), "My App");
  gtk_window_set_default_size(GTK_WINDOW (نافذة), 400, 400); // نافذة 400 × 400

  Button_box = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
  gtk_container_add(GTK_CONTAINER(window), Button_box);

  char *text = (char*) user_data;

  Button = gtk_button_new_with_label(text);
  g_signal_connect(button, "clicked", G_CALLBACK(print_text), text);
  gtk_container_add(GTK_CONTAINER(button_box), Button);
  gtk_widget_show_all(window);
}

int الرئيسي (int argc, char **argv) {

  المخزن المؤقت للحرف [50]؛

  printf("أدخل سلسلة للطباعة:");
  scanf("%49s", buffer); // 49 حرفًا كحد أقصى، لإتاحة مساحة للإنهاء الفارغ في المخزن المؤقت.

  GtkApplication *app;
  حالة كثافة العمليات؛ // سيتم تعيينه بواسطة وظيفة g_application_run لاحقًا، وسيتم إعادته كرمز الحالة الخاص بنا في النهاية.

  app = gtk_application_new("com.me.app", G_APPLICATION_DEFAULT_FLAGS);
  g_signal_connect(app, "activate", G_CALLBACK(init), &buffer); // أرسل عنوان المخزن المؤقت الخاص بنا إلى وظيفة init الخاصة بنا كوسيطة gpointer user_data.
  الحالة = g_application_run(G_APPLICATION(app), argc, argv);
  g_object_unref(app);

  حالة العودة
}


ملف تعريف:
gtkapp: gtkapp.c
دول مجلس التعاون الخليجي `pkg-config --cflags gtk+-3.0` -o gtkapp gtkapp.c `pkg-config --libs gtk+-3.0`
assistant
system
يا! أريد أن أبدأ في برمجة واجهة المستخدم الرسومية بلغة C. لقد قمت للتو بتثبيت GTK 3 على نظام Mac. أعلم أن لغة C ليست عادةً أول ما يتبادر إلى ذهني عندما يفكر المرء في واجهة المستخدم الرسومية، ولكني أرغب في تجربتها والاستمتاع بقليل من المرح. هل يمكنك أن تكتب لي نموذجًا لتطبيق GTK وملف makefile، من فضلك؟
user
أهلاً بك في عالم برمجة واجهة المستخدم الرسومية بلغة C باستخدام GTK 3 على نظام Mac.
أولاً، سأقدم لك نموذجًا لتطبيق GTK 3 بلغة C، ثم سأشرح لك كيفية إنشاء ملف makefile
assistant