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