Форум программистов, компьютерный форум, киберфорум
C/C++: IDE, инструментарий
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
2 / 2 / 0
Регистрация: 05.12.2015
Сообщений: 193

Как создаются графические оболочки для программ на Си?

28.06.2023, 18:08. Показов 8053. Ответов 122
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли для программы написанной на Си создать графическую оболочку?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.06.2023, 18:08
Ответы с готовыми решениями:

Как пишутся графические оболочки программ
Здравствуйте, на каких языках и с помощью каких библиотек пишутся графические оболочки для программ. Например Excel, Word и подобные проги....

Нужны графические оболочки для Ubuntu, похожие на рабочий стол Windows!
Хотелось бы иметь свой Linux внешне похожим на Windows.

Графические оболочки
Ситуация такая: у меня на пк изначально стоял mate, но позже я установил gnome и при запуске пк мне надо выбрать в какой оболочке я...

122
Злостный нарушитель
 Аватар для Verevkin
10890 / 5826 / 1288
Регистрация: 12.03.2015
Сообщений: 26,891
29.06.2023, 08:04
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Байт Посмотреть сообщение
Вот, уважаемый Verevkin большой поклонник Дельфи. Но, имхо, это старье.
Это неправда.
Цитата Сообщение от Байт Посмотреть сообщение
А тому, кто чуток поработал на Си, Паскаль вряд ли придет ко двору
И это неправда.
0
Нарушитель
446 / 887 / 106
Регистрация: 23.11.2021
Сообщений: 5,210
Записей в блоге: 19
29.06.2023, 08:09
Catstail, GUI - такая гадость, которую ни на каком ЯП не рационально писать.
Тех же библиотек полно, но фактически GTK и Qt - лютая дрянь, wxwigets - в ту же степь, про иксовые нативные библиотеки вообще молчу... Остаются лишь примитивные вещи типа nuklear. Ну, а некоторые не гнушаются сами на чистом OpenGL писать.
0
 Аватар для COKPOWEHEU
4149 / 2727 / 433
Регистрация: 09.09.2017
Сообщений: 12,086
29.06.2023, 08:29
Цитата Сообщение от Catstail Посмотреть сообщение
Не надо туда смотреть!
- извините, но я ответил строго на вопрос...
Если уж отвечать на вопрос строго, можно вспомнить, как сами упомянутые графические библиотеки реализованы. Что это в конечном итоге обращение к драйверу видеокарты, запись в ее регистры. Это я к тому, что эмбеддерам тоже приходится писать графические библиотеки, вот только подслоя winapi у них нет, да и стандартной видеокарты тоже. Так что на обычном Си просчитываются координаты всех виджетов, изобретаются функции рисования и т.д.
Цитата Сообщение от Catstail Посмотреть сообщение
А вообще-то, писать GUI на C-подобных языках не слишком рационально.
Тот же gtk написан на Си. Соответственно, куча программ, его использующих, тоже написана на Си. Да даже winapi написан на Си.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,768
Записей в блоге: 14
29.06.2023, 10:54
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Тот же gtk написан на Си.
- (и весь Windows тоже ) Не вижу противоречия. Это сделано один раз. А пользователи gtk (и любого подобного пакета) будут работать на более высоком уровне иерархии и им будет значительно легче.

Добавлено через 2 минуты
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Catstail, GUI - такая гадость, которую ни на каком ЯП не рационально писать.
Тех же библиотек полно, но фактически GTK и Qt - лютая дрянь, wxwigets - в ту же степь, про иксовые нативные библиотеки вообще молчу... Остаются лишь примитивные вещи типа nuklear. Ну, а некоторые не гнушаются сами на чистом OpenGL писать.
- ох... То, что вы называете "лютой дрянью", на самом деле очень популярные пакеты. Удивительно, что их пользователи не понимают, с какой "дрянью" они работают Ну, а OpenGL вообще здесь не при чем - это не GUI, а 3D-графика.
2
Нарушитель
446 / 887 / 106
Регистрация: 23.11.2021
Сообщений: 5,210
Записей в блоге: 19
29.06.2023, 11:26
Цитата Сообщение от Catstail Посмотреть сообщение
OpenGL вообще здесь не при чем
Очень даже при чем! Есть лишь два способа нарисовать GUI в линуксе (всякую хипстерщину вроде wayland не считаем): либо при помощи OpenGL, либо при помощи вызовов x-сервера. Все эти Qt/GTK/wxwidgets и прочие и используют один из этих двух путей, но чаще таки базируются на вызовах иксов. Ну, да и все равно: что Qt, что GTK - лютая неповоротливая дичь. Жаль, что некоторые лентяи продолжают ее использовать. Есть намного более легковесные heaser-only GUI библиотеки, которые точно так же могут использовать иксы в качестве нижнего уровня, либо opengl. Вот мне они нравятся.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,768
Записей в блоге: 14
29.06.2023, 11:45
Eddy_Em, интересные вещи сообщили. Спасибо. Не подозревал, что Linux "поступает" столь странным образом (GUI на openGL). Ну, а иксы - это классика.
0
Нарушитель
446 / 887 / 106
Регистрация: 23.11.2021
Сообщений: 5,210
Записей в блоге: 19
29.06.2023, 11:54
Цитата Сообщение от Catstail Посмотреть сообщение
странным
А что здесь странного? Вполне логично. Тот же SDL именно OpenGL в качестве нижнего уровня использует.
Кстати, в последних Qt можно вместо иксов тоже использовать OpenGL. Но есть проблема: если у меня на одном компьютере карта nvidia с блобом, а на другом - что угодно другое, между ними opengl'ные приложения по ssh работать не будут, и даже virtualgl не спасает, к сожалению. Поэтому кое какие вещи мне пришлось сетевыми делать.
0
 Аватар для COKPOWEHEU
4149 / 2727 / 433
Регистрация: 09.09.2017
Сообщений: 12,086
29.06.2023, 12:10
Цитата Сообщение от Catstail Посмотреть сообщение
Не подозревал, что Linux "поступает" столь странным образом (GUI на openGL).
Это-то как раз логично: если мы можем рисовать графику с использованием видеокарты, глупо этим не пользоваться.
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Есть лишь два способа нарисовать GUI в линуксе (всякую хипстерщину вроде wayland не считаем): либо при помощи OpenGL, либо при помощи вызовов x-сервера.
Хорошо бы уточнить формулировку. Под "рисованием при помощи OpenGL" обычно понимают все-таки ручные вызовы glBegin или там glDrawArrays. И вот это делают довольно редко - разве что в играх, когда GUI нужен свистячий и блестячий. Обычный же GUI это вызов библиотечных функций, которые в общем случае могут быть реализованы по-разному.
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Тот же SDL именно OpenGL в качестве нижнего уровня использует.
Первый раз слышу. Напротив, в нем приходится явно вызывать SDL_GL_CreateContext и прочие функции SDL_GL_* чтобы его использовать.
1
Нарушитель
446 / 887 / 106
Регистрация: 23.11.2021
Сообщений: 5,210
Записей в блоге: 19
29.06.2023, 12:12
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Напротив
Значит, в иксы тоже умеет. Но я когда-то давно видел примеры интерфейсов SDL именно на opengl. Сам-то я никогда в жизни SDL не использовал, я рисую простейшие интерфейсы на glut/glfw. Да у меня только одна задача есть, где как бы GUI нужен - отображать изображения с камеры. Хотя, я обнаружил, что есть sxiv - просмотрщик изображений, умеющий обновлять их по inotify. Разве что там нельзя менять палитру, инвертировать и т.п. вытворять - вот и пришлось таки на opengl примитивнейший просмотр делать. Вот здесь.
Ну, а если нужно для "чужого дяди" сделать интерфейс управления железякой, я рисую чертов веб-интерфейс - это проще, да и можно хоть со смартфона работать… Правда, веб-интерфейсы я жутко не люблю (html/css/javascript — это просто треш какой-то!), но что поделать? standalone клиент-серверные приложения я рисовать не собираюсь. Хотя пробовал немного с nuklear - там несложно и все нужные виджеты есть.

А для себя любимого - всегда CLI. Это намного удобней GUI и отлично автоматизируется.
0
 Аватар для COKPOWEHEU
4149 / 2727 / 433
Регистрация: 09.09.2017
Сообщений: 12,086
29.06.2023, 14:05
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Значит, в иксы тоже умеет.
SDL, glut, sfml не столько про графику, сколько про взаимодействие с графической системой ОС. Создание окна, обработка событий. Бонусом могут быть загрузка картинок, мультимедиа, сеть и многое другое. Но вот GUI там по сути нет, графика самая примитивная - просто чтобы было. Собственно, именно для этого там есть функции работы с OpenGL.
Вы же вроде с nuklear работали, там есть примеры и для X11, и для SDL, и для OpenGL1 over SDL и много для чего еще.
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,768
Записей в блоге: 14
29.06.2023, 16:31
Eddy_Em, COKPOWEHEU - не кажется, что мы довольно далеко "отгребли" от вопроса TC? Кстати, с т.з. программиста, openGL - это API. И win GDI - тоже API. Как я и написал в самом начале, нужно смотреть в сторону API.
0
 Аватар для COKPOWEHEU
4149 / 2727 / 433
Регистрация: 09.09.2017
Сообщений: 12,086
29.06.2023, 16:50
Цитата Сообщение от Catstail Посмотреть сообщение
Eddy_Em, COKPOWEHEU - не кажется, что мы довольно далеко "отгребли" от вопроса TC?
Да вроде не особо сильно. Те же SDL и openGL вполне можно использовать для создания GUI. Только неудобно: поверх все равно нужна библиотека виджетов.
Цитата Сообщение от Catstail Посмотреть сообщение
Кстати, с т.з. программиста, openGL - это API. И win GDI - тоже API.
Не соглашусь. API это всего лишь список доступных функций для конкретного окружения. В данном случае этот термин не поясняет ничего.
И по области применения они здорово отличаются.
OpenGL это чисто графическая библиотека, причем заточенная под трехмерку. Она даже окно себе создать не может. Зато быстрая и кроссплатформенная. Соответственно, требует немалого времени на освоение. Как результат, используется когда нужна высокая производительность в работе со сложной графикой.
WinGDI, насколько я помню - базовая рисовалка, специфичная для winapi, аналог cairo. В составе windows идет по умолчанию, достаточно примитивная и простая в освоении, но по производительности - "лучше, чем ничего". Стоит использовать для решения локальных задач, когда тянуть что-то более серьезное смысла нет. Нарисовать свой виджет, простенькую инфографику. Причем, важно, windows-only.
Кликните здесь для просмотра всего текста
Кстати о cairo (примитивная рисовалка для gtk). Мне как-то пришлось ей воспользоваться именно чтобы нарисовать виджет, которого в базовом наборе не было - вывод графика. Так-то я бы с радостью взял для этой цели OpenGL, но в виндовом порте соответствующий компонент не работал, пришлось извращаться. Но при скорости обновления данных раз в полминуты мне его возможностей хватило.

Для GUI же пользоваться ни тем, ни другим неэффективно. Есть ведь специализированные библиотеки вроде тех же gtk, Qt, nuklear. Да, они работают поверх каких-нибудь X11, winapi, OpenGL - но вот это никакого значения не имеет. Взаимодействуете-то вы с, например, Qt и используете его API.
0
Модератор
 Аватар для Curry
5171 / 3536 / 536
Регистрация: 01.06.2013
Сообщений: 7,689
Записей в блоге: 9
29.06.2023, 17:15
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
WinGDI, насколько я помню - базовая рисовалка, специфичная для winapi
Вообще то такого сокращения нет, по крайней мере MS его не использует везде говоря про Windows GDI.
wingdi бывают имена файлов или пакетов обёрток к разным языкам, но не название API.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
по производительности - "лучше, чем ничего".
Для рисования интерфейса с галочками и кнопочками особая производительность не нужна.
А там где нужна MS предлагает DirectX.
Но всё это, OpenGL, DirectX, SDL, не про GUI, в 2D они только могут геометрические фигуры рисовать, ну заливать их текстурами.

Поскольку ТС не спрашивал на каком ему языке программу с графической оболочкой делать, то я и предложил gtk.
Потому что всё остальное или не С, или ещё хуже.
1
 Аватар для Наталья8
638 / 396 / 67
Регистрация: 09.03.2016
Сообщений: 4,342
29.06.2023, 18:04
0
 Аватар для Наталья8
638 / 396 / 67
Регистрация: 09.03.2016
Сообщений: 4,342
29.06.2023, 18:10
На SFML удобнее. Кнопочки движочки. В нём само собою предусмотрено.
В интернете поковыряться и находишь. Ползунки правда сам изобретал.

C++
1
2
3
4
5
6
7
8
9
10
11
12
//========================================================  
        if (isMove4){//если можем двигать
            sprite6.setColor(Color::Green);//красим спрайт в зеленый                 ТОЧНЫЙ  ВЕРТИКАЛЬНЫЙ ДВИЖОК
            if ( pos.y - dY > 32 && pos.y - dY < win_height - 50 ){
                sprite6.setPosition(slider_vert1, pos.y - dY);// Запоминаем координаты движка     
                 _position3 = 0 - ((pos.y - dY) - win_height / 2) / 100;// Было привидение к интам    win_height -
                // -------- округление до двух знаков после запятой           
                std::stringstream stream;
                stream << std::fixed << std::setprecision(4) << _position3;
                stream >> _position3;
    ret_size = 0;
            }           }
На opencv всё на костылях. Но так уж получилось...
0
 Аватар для Наталья8
638 / 396 / 67
Регистрация: 09.03.2016
Сообщений: 4,342
29.06.2023, 18:16
Цитата Сообщение от Catstail Посмотреть сообщение
нужно смотреть в сторону API
Тоже смотрел...


Букоф конечно больше, но если фрамеворк ни чего не рисует, то приходиться.
Привинчивать для этого SFML, как то не хотелось...
Ну если там пара кнопок пара надписей, то нету ни чего плохого и в вин апи.
Образец из загашника вынимаешь и вперёд. Работает быстро за то...
1
Нарушитель
446 / 887 / 106
Регистрация: 23.11.2021
Сообщений: 5,210
Записей в блоге: 19
29.06.2023, 18:20
Наталья8, зачем такой примитивной штуке рисовать GUI? Там тупо достаточно скрипт накатать - обертку для ffmpeg, который и будет делать нужное. Ну или alias (не знаю, правда, возможно ли такое в форточках). Вот, скажем, так:
Code
1
2
3
alias |grep ffmpeg
alias recdesktop='ffmpeg -f x11grab -s 2560x1080 -r 8 -i :0.0 -qscale 0 '
alias recwebcam='ffmpeg -r 8 -f video4linux2 -s 640x480 -i /dev/video0 -f alsa -i hw:0,0 -vcodec libx264 '
А потом, если нужно мне записать видео с вебки или скринкаст сделать - тупо пишу recdesktop file.mkv, а когда надо заканчивать - жамкаю ctrl+c. Можно вообще начало и конец записи оформить самостоятельными скриптами (файл будет иметь имя вроде дата-время.mkv) и повесить начало и конец на хоткеи.

В общем, не надо рисовать на каждый чих GUI: в подавляющем большинстве случаев можно совершенно спокойно без него обойтись. Даже в винде (особенно современной).
0
 Аватар для Наталья8
638 / 396 / 67
Регистрация: 09.03.2016
Сообщений: 4,342
29.06.2023, 18:36
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Там тупо достаточно скрипт накатать
Есть уже накатанные.
Зачем тогда было свою api писать?
Поройся в интернете и ни чего делать не надо.
0
 Аватар для Наталья8
638 / 396 / 67
Регистрация: 09.03.2016
Сообщений: 4,342
29.06.2023, 18:37
Интересно было своё написать.
Бильдер.mp4
Это было давно...
0
 Аватар для Наталья8
638 / 396 / 67
Регистрация: 09.03.2016
Сообщений: 4,342
29.06.2023, 18:39
Я как бы знания получаю...

Не по теме:

Чё.... Опять где то наказали?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.06.2023, 18:39

Графические оболочки Linux
Какая графическая оболочка всё-таки лучше? Слышал что их много... Но самыми популярными являются KDE и Gnome. Обычно стандартом ставят...

Иксы и графические оболочки
Всем привет! Ставил на нетбук дебиан,все поставил,иксы встали нормально,встал вопрос что ставить. Сначала решил посмотреть на...

Графические оболочки линукс
у меня 2гб озу и процессор х32, подскажите пожалуйста граф. оболочки для линукса, чтобы они мало требовали. грубо говоря, чтобы всё летало

Графические оболочки под freeDOS
Какие актуальные графические оболочки посоветуете? Я так понял что для данной ОС можно запустить только 32х разрядные экзешники?

Не создаются ярлыки на рабочем столе при установке программ
Здравствуйте, скажите как создать свою тему? и вообще меня интересует что мне делать: я недавно переустановил винду и у меня вся возня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru