Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
19 / 17 / 6
Регистрация: 09.01.2014
Сообщений: 351

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

01.09.2017, 00:44. Показов 6049. Ответов 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
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 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
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
06.09.2017, 17:09
FateOri, года полтора-два назад.
Но только щупал. Кончиками пальцев и на C++.
Sciter я привел просто как вариант,
у него, вроде, C API тоже есть.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
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
Ответ Создать тему
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru