Используйте GTK + . Он написан на C и предоставляет хорошо спроектированный API C. Их учебное пособие очень хорошее.
GTK + - это набор инструментов для GNOME, поэтому ваши приложения идеально подходят для многих рабочих столов Linux.
Как лучше всего разрабатывать приложения с графическим интерфейсом пользователя с помощью C?
нет, если вам не нужно: -)
Сложно или просто не имеет смысла создавать приложения с графическим интерфейсом с C?
Это не обязательно такая сложная, но довольно избыточная и многословная задача (например, написание программ высокого уровня на языке ассемблера) с большим количеством повторяющегося шаблонного кода.
Лично я считаю более полезным просто встроить интерпретатор сценариев (например, Lua, Nasal) с привязками к библиотеке графического интерфейса, а затем закодировать пользовательский интерфейс на языке сценариев высокого уровня и кодировать только ядро самого приложения на C . Python упоминался ранее, но я думаю, что специальный язык расширения, такой как Lua, был бы более подходящим, потому что он не раздувает ваш исходный код и потому, что он не создает никаких дополнительных требований (например, библиотечных зависимостей или архитектурных).
Другими словами, внедрение чего-то вроде Python, Perl или Ruby может быть относительно простым (из-за хорошей документации и активности сообщества), но часто эти языки более сложны, чем само основное приложение.
Этот же подход используется в программном обеспечении AlgoScore , в котором используется встроенный интерпретатор Nasal с привязками GTK.
Многие высококачественные графические интерфейсы пользователя были написаны на языке C, например, с помощью Windows API. Нет особой причины, почему нет, но объектно-ориентированное программирование было очень успешным в моделировании интерактивной графики. Элементы графического интерфейса каким-то образом естественным образом отображаются в объекты C ++, которые могут инкапсулировать сложное поведение за простым интерфейсом.
Если вы используете систему * nix, вы можете использовать Xlib . Но вам, вероятно, лучше программировать на C ++ и обращаться к своему C-коду.
Если вы программируете на C в Windows - окна программирования Петцольда раньше были библией для работы пользовательского интерфейса на основе C.
РЕДАКТИРОВАТЬ: С тех пор, как я ответил на свой вопрос, сообщение было обновлено для Linux. Я оставлю сообщение здесь для всех, кто ищет, но на самом деле это не относится к Linux.
Не надо.
Используйте python, а затем привяжите вызовы, требующие больших вычислительных ресурсов, написанные на C.
Это достаточно сложно (или, в основном, достаточно многословно), чтобы большинство людей полагало, что это просто не имеет смысла. Часть приложения с графическим интерфейсом пользователя (в основном) реагирует на ввод пользователя, поэтому в этой области скорость редко бывает критичной - разница в несколько микросекунд (или даже миллисекунд) редко имеет большое значение. Пока ответы появляются в течение 100 мс (или около того), они в значительной степени воспринимаются как «мгновенные».
Динамическая типизация также хорошо работает при программировании графического интерфейса пользователя. C использует только статическую типизацию.