По суті, система вікон операційної системи відкриває деякі виклики API, які ви можете виконувати для виконання завдань, таких як створення вікна або наведення кнопки на вікно. В основному, ви отримуєте набір файлів заголовків, і ви можете викликати функції в імпортованих бібліотеках, як і у випадку з stdlib та printf.
Кожна операційна система має свій власний набір інструментів GUI, набір файлів заголовків та викликів API та власний спосіб робити. Існують також набір інструментів для різних платформ, таких як GTK , Qt та wxWidgets, які допомагають створювати програми, які працюють у будь-якому місці. Вони досягають цього, використовуючи однакові дзвінки API на кожній платформі, але іншу реалізацію для тих функцій API, які зводяться до викликів на рідній ОС OS.
Єдине, що у них буде спільне, що буде відрізнятися від програми CLI, - це щось, що називається циклом подій. Основна ідея там є дещо складною і складною для стиснення, але по суті це означає, що у вашому головному класі / головній функції не пекло багато, крім:
- перевірити чергу подій, чи є якісь нові події
- якщо є, відправте ці події відповідним обробникам
- коли ви закінчите, поверніть дохід до операційної системи (як правило, за допомогою спеціального дзвінка функції "сну" або "вибору" або "виходу")
- тоді функція урожайності повернеться, коли операційна система виконана, а у вас ще один обхід циклу.
Є багато ресурсів щодо програмування на основі подій. Якщо у вас є досвід роботи з JavaScript, це та сама основна ідея, за винятком того, що ви, скриптер, не маєте доступу та контролю над самим циклом подій або якими подіями є, ваше єдине завдання - написати та зареєструвати обробники.
Вам слід пам’ятати, що програмування GUI неймовірно складна і загалом складна. Якщо у вас є можливість, насправді набагато простіше просто інтегрувати вбудований веб-сервер у свою програму та мати HTML / веб-інтерфейс. Єдине виняток, з яким я стикався - це Apple Cocoa + Xcode + Builder інтерфейсу + навчальні посібники, які роблять його легко найбільш доступним середовищем для людей, що не знають про програмування GUI, що я бачив.