Введение в программирование GUI с помощью c
Я новый графический интерфейс и программирование в целом, и до сих пор я имею общее представление о c и потратил довольно много времени на создание консольных приложений.
Я пытаюсь изучить графический интерфейс, но до сих пор не увенчался успехом. Я пробовал изучать wxwidgets (через официальную документацию), gtk (через официальную документацию) и win32 (forgers win32 tutorial), но до сих пор не получил его.
Я все еще очень хочу, но не могу найти хороший материал. Что бы вы порекомендовали как начинающий для новичков?
Ответы
Ответ 1
Если вы строго ограничены C, у вас есть только несколько вариантов. GTK +, вероятно, самый легкий для новичков.
Объектно-ориентированный язык, такой как С++, гораздо более подходит для программирования графического интерфейса. Если вы хотите использовать С++, я настоятельно рекомендую Qt, в основном из-за его очень хорошей документации, с очень хорошим tutorials, особенно для начинающих.
Ответ 2
Я бы не предложил попробовать сделать GUI с C. Это не очень удобно делать.
Но если вы действительно хотите это сделать. Здесь неплохой учебник по Windows API.
Вы также можете использовать библиотеку, например Allegro, она предназначена для игр, но может быть одинаково полезна в программах.
Но так, как я хотел бы предложить, сначала изучите основы программирования GUI и приложений (это означает, что машина состояния) с простым языком (любой простой будет делать, лично предложит Lua с платформа Löve2D). И затем используйте знания, которые вы получили в C. Государственная машина и поток событий будут сложнее понять, если вам приходится иметь дело с сборкой мусора и указателями... (это еще можно узнать).
Ответ 3
Я бы посоветовал вам попробовать научиться некоторому объектно-ориентированному программированию с помощью такого языка, как Objective C или С++, поскольку программирование графического интерфейса затруднено. Особенно тем более в C.
Многие концепции программирования GUI вращаются вокруг того, что вы знаете, как работают объекты, со всеми виджетами, которые составлены в любой структуре графического интерфейса и как они взаимодействуют друг с другом. Существует также концепция событий, которые отправляют сообщения от одного источника входного сигнала к графическому компоненту (или между двумя графическими компонентами).
Вкратце: становится легче читать документацию, когда вы знаете, что все объекты... и даже тогда есть много чего взять.
Ответ 4
Если вы хотите изучить программирование GUI в Windows на C, хорошей новостью является то, что собственный API основан на C. Плохая новость заключается в том, что собственный API не является точно моделью ясности и согласованности. Гораздо проще начать с платформы OO, построенной поверх этого API.
Если вы все еще хотите изучить программирование Windows GUI на C, лучшим вариантом будет Petzold Программирование Windows. Он научит вас программированию на Windows в целом, включая все материалы GUI, используя собственный API.
Ответ 5
Я собираюсь порекомендовать вернуться к gtk + и попробовать его больше. Почему?
Поскольку существует большое количество программного обеспечения с открытым исходным кодом, доступное как для Linux, так и для Windows, написанное на C с использованием библиотек gtk + для графического интерфейса. Из больших приложений, таких как GIMP и GnuCash, для небольших инструментов доступен исходный код, который вы можете прочитать, чтобы узнать, как они выполняют определенные подвиги. Являются ли они лучшим примером того, как выполнить что-то, это еще один вопрос, но по крайней мере у вас есть преимущество, чтобы увидеть, как работает работающее программное обеспечение.
Кроме того, gtk + включает glib, который является удобным инструментом для работы с общими структурами данных и алгоритмами. Поэтому вместо того, чтобы тратить время на внедрение связанных списков и прочее, вы можете просто использовать те, которые есть в библиотеке, и время вашего кодирования расходуется на решение ваших собственных головоломок.
Документация Gtk + вряд ли идеальна, но она приличная. Для разработчиков приложений есть список рассылки.
Ответ 6
Чтение книги доставит вам до сих пор. Чтобы перейти на следующий уровень, вам просто нужно поэкспериментировать с тем, что может сделать API. Хотя вы можете получить все до уровня API Win32 для своего графического интерфейса, но если вы только начинаете просто сосредоточиться на том, чтобы попробовать разные методы.
Скоро вы узнаете, что работает и что не работает.
Если бы я рекомендовал книгу, я бы рекомендовал нетехническую книгу.
<Б > Дизайн повседневных вещей
Далее добавляется видеозапись, более психологический обзор проектирования графического интерфейса и способы сделать ваших пользователей и вас счастливыми.
Бизнес-программное обеспечение - Джоэл Спольский
Последняя, эта книга поможет вам понять, что когда вы разрабатываете приложения, люди будут рассматривать ваши атеистические решения и выбор через свои собственные культурные ценности. Таким образом, важно выбрать одну эстетическую тему дизайна для вашего приложения и придерживаться ее.
Код культуры
Ответ 7
Что нужно знать, так это то, что GUI не встроен в C (как вы, несомненно, уже обнаружили), но подключается через различные библиотеки. wxWindows, qt, gtk и, конечно же, VCL являются основными игроками. В то время как все они делают подобные вещи, они все различаются подробно.
Что-то важное, чтобы знать, что, если вы должны были программировать на С++, у вас будет доступ к некоторым объектно-ориентированным оболочкам для этих и других библиотек, которые могут сделать вашу жизнь немного легче. "plain" C иногда рассматривается как "старая школа" в наши дни, а поддержка не совсем "оживленная", хотя существующие библиотеки GUI превосходны в своем собственном праве.
Что я рекомендую, так это то, что вы просматриваете "сеть" для описания и сравнения библиотек графического интерфейса пользователя и оцениваете свои результаты в соответствии с вашими личными потребностями. Будут ли ваши вещи работать только на Windows, или вы хотите, чтобы это было кросс-платформенным? Является ли лицензирование проблемой? Вы хотите небольшой и простой (и, возможно, не такой сексуальный), или вы хотите, чтобы GUI закончил все графические интерфейсы?
Выбрав победителя, работайте через онлайн-учебники или примеры. Если вам удастся понять суть этого вопроса и вы можете запрограммировать требуемый стиль, возьмите книгу мертвых деревьев, чтобы изучить ее подробно и понять ее подробно.
Ответ 8
+1 для GTK. Если вы привязаны к C, либо по собственному выбору, либо по проектам, вам будет трудно работать лучше, чем GTK+. QT - это в основном С++, поэтому, если С++ в порядке, это опция. Но документы для GTK + не так уж плохи, поскольку проекты с открытым исходным кодом идут, и там есть много примеров кода, чтобы посмотреть.
Если у вас есть выбор языков переключения, есть другие варианты. Cocoa - отличная среда программирования GUI на Mac (я никогда не пробовал Cocoa для окон, но слышал, что это возможно.) и Objective-C хорошо подходит для программирования графического интерфейса.
Ответ 9
Я предлагаю вам также изучить программу, управляемую событиями. Во многих программах с графическим интерфейсом основная программа ждет события, например, щелчка мыши, чтобы затем обработать событие. Программирование вождения событий сильно отличается от программирования последовательного исполнения.
Другие темы для изучения - многопоточное и многозадачное программирование. Многие объекты GUI (виджетов), такие как кнопка, передают сообщения другим объектам; или передавать всем слушателям. Передача сообщений является общим процессом в многопоточном и многозадачном программировании.
Ответ 10
Я рекомендую библиотеку Cimg, которая является открытым исходным кодом и очень полно используется в графическом интерфейсе и обработке изображений 2'D:
Библиотека CImg является открытым исходным кодом С++ инструментарий для обработки изображений с учетом этих свойств: Полезность CImg определяет простые классов и методов, направленных на манипулирование родовыми изображениями в вашем собственный код С++: загрузка/сохранение различных файлов форматы, значения пикселов доступа, отображение, изменять размер/вращать/зеркало/фильтр, рисовать примитивы (текст, грани, кривые, 3D объекты,...), вычислять статистику, управлять взаимодействием пользователей и т.д.... Стандартные классы изображений могут представляют наборы данных до 4-х мерных широкий (от 1D скалярных сигналов до 3D гиперспектральные объемы), с шаблоном пиксельных типов. Коллекции изображений и последовательности также поддерживаются. Переносимость CImg является автономной и, таким образом, очень портативный. Это полностью работает в разных операционных системах (Unix, Windows, MacOS X, * BSD) с различные компиляторы С++ (Visual С++, GNU g++, Intel icc, Borland bcc,...). Простота CImg - легкий. это сделанный из одного файла заголовка CImg.h который должен быть включен в ваш С++ источник. Он определяет только четыре разных классы. Он может быть скомпилирован с использованием минимальный набор стандартных С++ и системы библиотеки. Нет необходимости в экзотических или комплексные зависимости. растяжимость Хотя не требуется, CImg может использовать функциональности внешних инструменты/библиотеки, такие как ImageMagick, GraphicsMagick, XMedCon, FFMPEG, libpng, libjpeg, libtiff, Magick ++, Lapack, Board, OpenEXR или FFTW3. Кроме того, простой подключаемый механизм позволяет любому пользователю напрямую повышать возможности библиотеки согласно его потребностей. Свобода CImg - это бесплатный, библиотека с открытым исходным кодом, распространяемая по CeCILL-C (рядом с GNU LGPL) или CeCILL (совместимый с GNU GPL). Его можно использовать в коммерческих приложений.
Это документ для Cimg.