Резюме
Хорошо, этот пост стал действительно большим, поэтому перед тем, как его прочесть, приведем краткую сводку: для программирования GUI существует ряд хороших библиотек C / C ++ (например, QT). Большинство людей, по крайней мере, в системах Windows, используют язык .NET (например, C #), когда им нужен графический интерфейс, и C / C ++, когда им нужно больше контроля / скорости. Также очень распространено использование как в комбинации, то есть сделать графический интерфейс в C #, так и критичные по скорости детали в C.
Я все же призываю вас прочитать более длинный ответ, он содержит гораздо больше информации о ваших возможностях.
Более длинный ответ
Я начну с большого вопроса, а затем отвечу (насколько я могу) на ваш конкретный вопрос о создании графического интерфейса. Я думаю, вы страдаете от того, что C используется для обучения программированию, и это гораздо проще сделать, только используя программы командной строки (в конце концов, их гораздо проще писать). Это не означает, что C не может делать все, что вы хотите, в частности, графический интерфейс. Оно делает. Я не думаю, что есть какой-либо тип программного обеспечения, которое не было сделано в C, обычно до того, как оно было сделано на других языках.
Хорошо, некоторые ответы:
Полезно ли C?
C и его очень близкий родственник C ++ отвечают за огромную часть мирового кода. Я не знаю, написано ли больше кода на C, чем на любом другом языке, но я предполагаю, что он не за горами.
Большинство действительно важных программ, которые вы используете, написаны на C / C ++. Только для одного примера, Windows.
Где сегодня используется C?
C / C ++ по-прежнему используются лот . Они особенно полезны для разработки низкоуровневых вещей (например, таких как операционные системы, которые требуют большой скорости, большой способности точно контролировать то, что делает ваш код и т. Д.).
Но не думайте, что это все низкий уровень для программистов на Си. Даже сегодня, когда доступно много других языков (которые, возможно, намного лучше, и, конечно, гораздо проще программировать), C все еще используется для создания практически всего. Приложения с графическим интерфейсом, о которых вы специально спрашивали, очень часто создаются на C, хотя в настоящее время многие люди переходят на другие языки. Заметьте, я говорю переключение: C раньше был стандартным языком для написания, ну, вообще, всего.
Как мне разработать GUI с C
Хорошо, вы специально хотели узнать, как создать графический интерфейс для C (надеюсь, C ++ тоже подойдет).
Прежде всего, это зависит от ряда факторов:
- Для какой операционной системы вы пишете? (Windows, Mac и Linux являются наиболее распространенными).
- Вы хотите, чтобы графический интерфейс работал и на других системах?
Наиболее распространенным случаем является написание программного обеспечения для работы в Windows. В этом случае «естественным» решением является написание вещей, которые работают с Win32 API. Это в основном библиотека, которая поставляется с Windows, позволяя вам выполнять любую работу с графическим интерфейсом, которую вы хотите.
Большая проблема в том, что это довольно сложно. Как и все, очень сложно. По этой причине большинство людей больше не выполняют такую работу.
Так, каковы ваши другие варианты?
Наиболее естественным является то, что называется языком .NET. Это набор языков, вместе с библиотеками, которые создала Microsoft. Это, вероятно, самый простой способ получить графический интерфейс в Windows. Проблема в том, что вы не можете использовать их из C (поскольку это не язык .NET).
Предполагая, что вы хотите остаться на земле C / C ++, вы можете использовать какую-то библиотеку, которая облегчает работу с Windows API (поскольку скрывает все неприятные детали):
- Одним из наиболее распространенных является то, что называется MFC (Microsoft Foundation Classes), которые представляют собой набор классов C ++, которые облегчают создание материалов для Windows. К сожалению, эта библиотека очень старая и ее не так просто использовать.
- Другой способ пойти дальше, если вы хотите программировать на C ++, это использовать какую-то стороннюю библиотеку. Это библиотека, созданная кем-то кроме Microsoft, которая упрощает создание графического интерфейса.
- Другой вариант - создать только часть вашего программного обеспечения с графическим интерфейсом на языке .NET и использовать C / C ++ для других частей (или использовать язык .NET для выполнения почти всего, и C / C ++ только тогда, когда вам это действительно нужно, например, когда вам нужно, чтобы дела шли очень быстро). Это очень популярный вариант.
Преимущество сторонней библиотеки заключается в том, что если вы выберете нужную библиотеку, вы сможете использовать один и тот же код для создания графического интерфейса пользователя для всех операционных систем одновременно.
Я думаю, что наиболее известной из этих библиотек является QT, а также WxWidgets, но есть и множество других. Я бы лично выбрал QT, так как он, кажется, получил наибольшую известность, но я не работал ни с одним из них.