19 / 17 / 6
Регистрация: 09.01.2014
Сообщений: 351

Подскажите простой способ создать GUI в Си

01.09.2017, 00:44. Показов 6080. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите пожалуйста - какими средствами можно создать простенький графический интерфейс?
Задача = отобразить информацию из массивов в виде графиков. Работать будет на винде. Попробовал сейчас на winapi сделать - после SceneBuilder(Java) сижу и отплевываюсь.
Буду благодарен за наводку - в какую сторону вообще копать. Спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.09.2017, 00:44
Ответы с готовыми решениями:

Подскажите простой способ фильтрации постов
Делаю страницы гостиниц в виде постов. Гостиниц около 100. Они находятся в разных городах и имеют разное количество звёзд. Как проще...

Подскажите простой способ копирования с string в char
strcpy( Mass, X.c_str() ); не подходит

Подскажите простой способ записи звука со звуковой карты
Подскажите как просто записать звук с звуковой карты в Ubuntu (14.04 оболочка Unity) 1. Попробовал gnome-sound-recorder - просто не...

31
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
06.09.2017, 11:50
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Kukstyler Посмотреть сообщение
FateOri, написать можно почти всё, почти на всём.
есть такое

Цитата Сообщение от Kukstyler Посмотреть сообщение
Я даже игру на Кобол-е видел.
круто))

Цитата Сообщение от Kukstyler Посмотреть сообщение
Так что, Господа, на мой взгляд, язык не устарел, пока не устарели задачи, которые он решает, либо не появился другой язык, позволяющий решать данные задачи лучше.
поддерживаю

Цитата Сообщение от volvo Посмотреть сообщение
Как только в код станут добавляться плюшки, которые напрямую завязаны на WinAPI, и которые не были внесены во фреймворки (а таких много, поверь), ты в код C# начнешь тоннами добавлять DllImport-ы да описания структур и констант, и в результате твой шарпокод станет гораздо более монструозным и нечитабельным.
не станет пока на шарпах программист добавит пару десятков нужных импортов к массе шарпового кода сишник будет вынужден весь код писать в таком стиле как итог си для гуев не пригоден кроме как для баловства и форумных холиварчиков хотя и там он смотрится глупо

Цитата Сообщение от volvo Посмотреть сообщение
Только не надо говорить, что это если этого нет во фреймворке - значит, оно не нужно. Оно еще как бывает нужно.
не буду все во фреймверк не впихнешь да оно и не надо иначе будут еще одни кресты

Цитата Сообщение от volvo Посмотреть сообщение
А в Сях нужно будет просто вызвать функцию, без лишних движений. Итого плюс одна/две строки кода.
движения
они уже были показаны раньше))

Цитата Сообщение от CoderHuligan Посмотреть сообщение
А ты заплатишь?
неа даже если было бы за что

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Это значит что ты ничего не видишь.
ой ой какие нежные чуть что сразу наскоки вырисовываются
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
06.09.2017, 12:58
Цитата Сообщение от FateOri Посмотреть сообщение
как итог си для гуев не пригоден кроме как для баловства
Думаю, не надо вдаваться в крайности. Си, почему бы и нет, пригоден для создания GUI приложений, (то есть, это не слишком сложно, особенно, говоря про простые/использующие стандартные GUI элементы, приложения). НО Си - не лучшее решение в данном случае, т.к. есть языки заточенные на GUI, которые позволяют делать это проще.

Насколько мне известно, в Java, тоже весь код для приложений GUI пишется вручную. И не потому, что нет графических редакторов GUI, а потому, что код, который они создают как раз нечитабельный. И да, GUI приложения на Java - тоже не считается наилучшей практикой, однако таких приложений не мало.

По-этому термин "непригодный", в данном случае, всё так и не совсем правильный. Но Си - не предназначен для GUI, по-этому создание на нём соответствующих приложений будет по-сложнее.
1
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
06.09.2017, 13:09
Цитата Сообщение от Kukstyler Посмотреть сообщение
Думаю, не надо вдаваться в крайности. Си, почему бы и нет, пригоден для создания GUI приложений, (то есть, это не слишком сложно, особенно, говоря про простые/использующие стандартные GUI элементы, приложения). НО Си - не лучшее решение в данном случае, т.к. есть языки заточенные на GUI, которые позволяют делать это проще.
не пригоден не в том смысле что невозможно а в том что при наличии шарпов, жабы и даже крестов (кути) всерьез рассматривать С для гуя мягко говоря неразумно и пока никаких стоящих аргументов кроме минусов в репутацию приведено не было

Цитата Сообщение от Kukstyler Посмотреть сообщение
Насколько мне известно, в Java, тоже весь код для приложений GUI пишется вручную. И не потому, что нет графических редакторов GUI, а потому, что код, который они создают как раз нечитабельный. И да, GUI приложения на Java - тоже не считается наилучшей практикой, однако таких приложений не мало.
да наверное не особо на джаве писал пот на формах шарповых там констурктор используют а генерируемый код прячется в специальном файле

Цитата Сообщение от Kukstyler Посмотреть сообщение
По-этому термин "непригодный", в данном случае, всё так и не совсем правильный. Но Си - не предназначен для GUI, по-этому создание на нём соответствующих приложений будет по-сложнее.
если задача стоит написать приложение под виндовс с красивым GUI то выбирать С для этого будет преступлением
не знаю как по мне так С именно что непригодный для этого хотя конечно я и не спорю и не спорил что написать тоже самое на С невозможно - возможно конечно но абсолютно нецелесообразно.
1
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
06.09.2017, 14:33
Цитата Сообщение от FateOri Посмотреть сообщение
возможно конечно но абсолютно нецелесообразно.
Полностью согласен с данной формулировкой. Именно нецелесообразно.
1
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
06.09.2017, 15:28
Цитата Сообщение от FateOri Посмотреть сообщение
если задача стоит написать приложение под виндовс с красивым GUI
То пишем интерфейс на html/css/js, и, цепляем его, например, с помощью Sciter.
1
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
06.09.2017, 16:51
Цитата Сообщение от Croessmah Посмотреть сообщение
То пишем интерфейс на html/css/js, и, цепляем его, например, с помощью Sciter.
посмотрел скриншотики выглдит достойно)
а сами то Sciter щупали?
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
06.09.2017, 17:09
FateOri, года полтора-два назад.
Но только щупал. Кончиками пальцев и на C++.
Sciter я привел просто как вариант,
у него, вроде, C API тоже есть.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
06.09.2017, 19:02
FateOri, все эти ваши си-диезы хороши ровно до тех пор, пока не начинают мусор собирать в самый неподходящий момент, или ещё какой-нибудь ересью заниматься. Так, что, если задача по времени критична, С - самый надёжный вариант. Да и нет там ничего сложного...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <gtk/gtk.h>
#include <math.h>
 
#define STEP_FREQ (10.0)
#define STEP_FUNC (0.1)
 
gboolean draw_callback(GtkWidget * widget, cairo_t * cr, gpointer data) {
    gdouble width = gtk_widget_get_allocated_width(widget);
    gdouble height = gtk_widget_get_allocated_height(widget);
    gdouble step = height / ( 2.0 * STEP_FREQ );
    
    cairo_set_source_rgb(cr, 1., 1., 1.);
    cairo_rectangle(cr, 0, 0, width, height);
    cairo_fill(cr);
    
    cairo_set_source_rgba(cr, 0.3, 0.3, 0.3, 0.6);
    cairo_set_line_width(cr, 0.2);
    
    for ( gdouble xpos = 0.; xpos < width; xpos += step ) {
        cairo_move_to(cr, xpos, 0.);
        cairo_rel_line_to(cr, 0., height);
        cairo_stroke(cr);
    }
    
    for ( gdouble ypos = 0.; ypos < height; ypos += step ) {
        cairo_move_to(cr, 0., ypos);
        cairo_rel_line_to(cr, width, 0.);
        cairo_stroke(cr);
    }
    
    cairo_set_source_rgba(cr, 0.0, 0.0, 0.0, 1.);
    cairo_set_line_width(cr, 0.6);
    cairo_move_to(cr, 0, height / 2.);
    cairo_rel_line_to(cr, width, 0);
    cairo_stroke(cr);
    cairo_move_to(cr, width / 2., 0);
    cairo_rel_line_to(cr, 0, height);
    cairo_stroke(cr);
    
    cairo_set_source_rgb(cr, 1.0, 0.0, 0.0);
    cairo_set_line_width(cr, 1.0);
    
    cairo_move_to(cr, 0.0, height / 2.0);
    for ( gdouble x = STEP_FUNC; x < width; x += STEP_FUNC ) {
        gdouble y = (sin(x / width * STEP_FREQ) * height / 2.0) + height / 2.0;
        cairo_line_to(cr, x, y);
    }
    cairo_stroke(cr);
    
    return FALSE;
}
 
int main(int argc, char ** argv) {
    gtk_init(&argc, &argv);
    
    GtkWidget * win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(win), "y = a * sin(x) + b");
    g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), NULL);
    
    GtkWidget * da = gtk_drawing_area_new();
    gtk_container_add(GTK_CONTAINER(win), da);
    gtk_widget_set_size_request(da, 800, 400);
    g_signal_connect(G_OBJECT(da), "draw", G_CALLBACK(draw_callback), NULL);
    
    gtk_widget_show_all(win);
    gtk_main();
    
    return 0;
}


Не по теме:

Стойкий приступ дежавю. По-моему всё это уже обсуждали, я даже что-то похожее выкладывал. Лень искать.

4
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
06.09.2017, 20:54
Цитата Сообщение от easybudda Посмотреть сообщение
FateOri, все эти ваши си-диезы хороши ровно до тех пор, пока не начинают мусор собирать в самый неподходящий момент, или ещё какой-нибудь ересью заниматься.
не мои я за диезы никогда не топил))

Цитата Сообщение от easybudda Посмотреть сообщение
Так, что, если задача по времени критична, С - самый надёжный вариант
согласен ну хотя можно часть с гуи переложить на другой яп а дергать функции их сишной библиотеки

Цитата Сообщение от easybudda Посмотреть сообщение
Да и нет там ничего сложного...
так гтк ну красивее и читабельнее чем вынь апи, да
0
08.09.2017, 11:21

Не по теме:


По теме современных языков, фреймворков и т.д. :D

Миниатюры
Подскажите простой способ создать GUI в Си  
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
08.09.2017, 11:21
По теме современных языков, фреймворков и т.д.
Миниатюры
Подскажите простой способ создать GUI в Си  
3
19 / 17 / 6
Регистрация: 09.01.2014
Сообщений: 351
08.09.2017, 20:55  [ТС]
Спасибо всем за участие. В ходе раздумий решил просто написать интерфейс на другом языке (с++ -> Qt либо SFML) и прикрутить к нему базовую часть, написанную в Си.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.09.2017, 20:55

Самый простой способ создать таблицу
подскажите пожалуйста как можно сделать таблицу, прошу привести пример, даже самый простой Добавлено через 21 час 54 минуты ну...

создать стоку из n нулей, самый простой способ
пока придумал &quot;000000000000000000000000000000000&quot;.slice(0, n) з.ы. n = {0, 254}

Подскажите самый простой способ очистки экрана в консольном Delphi (альтернативу clrscr в pascal)
Желательно покажите на примере любой программы, пожалуйста.

Подскажите самый простой способ виртуальной локальной сети! Возможен ли тоннель через обычные роутеры?
Всем привет! У меня дома на компьютере (Windows 10) обычный серый ip от ростелекома через маршрутизатор. У меня локально развернут...

Самый простой способ создать диалог для открытия файла с диска?
Добрый день! Подскажите, пожалуйста, самый не трудозатратный способ создать что-то вроде этого? То есть вызвать диалог, который...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Опции темы

Новые блоги и статьи
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, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru