Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/30: Рейтинг темы: голосов - 30, средняя оценка - 4.83
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
1

Средства для создания GUI

29.06.2015, 15:01. Показов 6109. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Да, такие темы периодически всплывали. Но последняя более похожая датирована 2010 годом, за пять лет то все могло уже кардинально поменяться.

Собственно вопрос, какими средствами создается GUI в win32 приложении ? Какие из них лучше использовать, какие нет.

Я знаю про существование библиотек MFC, Qt, GDI+. WinAPI в конце концов.
Однако, я понятия не имею ни преимуществ/недостатков каждой из них(кроме кроссплатформенности Qt), ни возможности их применения в реальных проектах.
Вот скажем, есть приложения Photoshop, ACDSee, какой нибудь тонкий клиент какого либо сервиса( Steam'a того же), и еще тонна приложений с красивым, шустрым интерфейсом. С помощью чего они были сделаны ?

Зачем мне это/цель:
1) Хоть я пока что пишу для себя, но хочется осваивать инструмент для создания приложений высокого уровня. Что бы избежать ситуации, выбрав какой то инструмент и придя на собеседование услышать, что то чем я пользуюсь уже все успели позабыть.
2) В планах реализовать жалкое подобие UML редактора (двигающиеся элементы, отрисовка новых и тд. ), потому производительность рендеринга ключевой аспект.

P.S.
По первому пункту, если бы вопрос стоял только в предстоящем собеседовании, то можно было бы просто по вакансиям поглядеть. Однако возможно есть инструменты, которые более удобны/полезны/лучше, но еще не получили распространение среди фирм.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.06.2015, 15:01
Ответы с готовыми решениями:

Какие библиотеки лучше использовать для создания Gui
Пока-что рассмотрим "либы" для Винды. На какие библиотеки/технологии стоит обратить внимание??? Qt производительная GTK не...

Стоит ли изучая С++, переключиться на С# для создания GUI ?
Всем привет. Я учусь программировать на с++, всегда делал программы только в консольных окнахи сейчас появилось желание написать...

Трудности с выбором IDE для создания GUI
Месяца три назад начал изучать С++. Написал небольшую программу которая прогнозирует вариант течения хронического вирусного гепатита С для...

12
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9649 / 4802 / 762
Регистрация: 17.04.2012
Сообщений: 9,636
Записей в блоге: 14
10.07.2015, 14:05 2
Тема для новой войны (точнее, давно не новой).
На WinAPI вам придётся писать много кода, есть библиотеки с более высоким уровнем абстракции.
Из кроссплатформенных - Qt, GTK+, wxWidgets. Первый активно развивается, второй тоже, но для него нет таких удобных средств, как Qt Creator. Третий захирел, насколько мне известно.
MFC майкрософтом уже не развивается, у них другие планы.
Берите Qt, короче говоря.
1
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
10.07.2015, 17:49 3
Чисто для коллекции могу предложить рассмотреть и такие направления:
а) легковесные надстройки над WinAPI, которые скрывают значительную часть "грязи", добавляют контроль типов и удобный ОО-синтаксис, но при этом конечный продукт получается практически таким же, как если бы писался на чистом WinAPI;
б) свой собственный GUI средствами OpenGL (вот уж где можно добиться высокой производительности рендеринга).
0
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
10.07.2015, 21:10  [ТС] 4
Цитата Сообщение от Nick Alte Посмотреть сообщение
а) легковесные надстройки над WinAPI, которые скрывают значительную часть "грязи", добавляют контроль типов и удобный ОО-синтаксис, но при этом конечный продукт получается практически таким же, как если бы писался на чистом WinAPI;
В качестве "легковестных надстроек", что именно вы советуете ?
Цитата Сообщение от Nick Alte Посмотреть сообщение
б) свой собственный GUI средствами OpenGL (вот уж где можно добиться высокой производительности рендеринга).
Отличная идея в целом. Я как то думал в этом направлении, но посчитал что для обычного приложения - это перебор

Цитата Сообщение от tezaurismosis Посмотреть сообщение
Тема для новой войны (точнее, давно не новой).
На WinAPI вам придётся писать много кода, есть библиотеки с более высоким уровнем абстракции.
Из кроссплатформенных - Qt, GTK+, wxWidgets. Первый активно развивается, второй тоже, но для него нет таких удобных средств, как Qt Creator. Третий захирел, насколько мне известно.
MFC майкрософтом уже не развивается, у них другие планы.
Берите Qt, короче говоря.
По поверхностному взгляду - она действительно фаворит. Во первых библиотека включает в себя не только отрисовку GUI но и полным полно всего другого. Кроссплатформенный. Есть своя IDE. Встречается как одно из желаемых требований в вакансиях.

А вот по поводу WinApi. Все элементы которые я создаю - выглядят ужасно ) Стиля Windows 98. Как их заставить выглядеть лучше - вероятней всего самому рисовать и тд. Как именно я не нашел увы (более чем уверен потому что не правильно искал). Если сможете для этого какие то примеры дать - был бы весьма признателен.
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
10.07.2015, 21:21 5
Цитата Сообщение от Kseon12 Посмотреть сообщение
В качестве "легковестных надстроек", что именно вы советуете ?
Тут лучше поискать самостоятельно что-нибудь подходящее, но в качестве примера (или отправной точки) могу ткнуть пальцем в Win32++
Цитата Сообщение от Kseon12 Посмотреть сообщение
для обычного приложения - это перебор
Зависит от обстоятельств. Нынче многие приложения не стесняются прибегать к OpenGL для отрисовки интерфейса, включая LibreOffice и Qt Creator.
Цитата Сообщение от Kseon12 Посмотреть сообщение
Все элементы которые я создаю - выглядят ужасно
Это из-за дурацких сложностей с визуальными стилями. Самому рисовать не надо, надо не забыть вызвать InitCommonControls и добавить в проект манифест с нужным содержимым.
2
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
11.07.2015, 00:02  [ТС] 6
Цитата Сообщение от Nick Alte Посмотреть сообщение
Зависит от обстоятельств. Нынче многие приложения не стесняются прибегать к OpenGL для отрисовки интерфейса, включая LibreOffice и Qt Creator.
Тогда в целом стоит будет посмотреть в эту сторону.
Цитата Сообщение от Nick Alte Посмотреть сообщение
Это из-за дурацких сложностей с визуальными стилями. Самому рисовать не надо, надо не забыть вызвать InitCommonControls и добавить в проект манифест с нужным содержимым.
С этой функцией я столкнулся, добавляя Date Picker. Но за нее вообще ничего не знаю, как и за манифест
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.07.2015, 01:05 7
Цитата Сообщение от Kseon12 Посмотреть сообщение
Я знаю про существование библиотек MFC, Qt, GDI+. WinAPI в конце концов.
C++Builder.

В обще избитая темя что бы раписывать, если вбить в поиск по форума поднимится много тем с долгими обсуждениями и спорами.

Добавлено через 6 минут
Разница между Visual C++ и C++ Builder
MFC WinApi для создания интерфейса
С++ Builder или Visual C++?
1
Неэпический
 Аватар для Croessmah
18124 / 10709 / 2063
Регистрация: 27.09.2012
Сообщений: 26,997
Записей в блоге: 1
11.07.2015, 10:17 8
Лучший ответ Сообщение было отмечено Kseon12 как решение

Решение

Пожалуй, выражу своё, никому не нужное мнение по поводу указаных средств
MFC, Qt, GDI+. WinAPI
Начну с WinAPI.
В силу того, что это непосредственно системные функции, необходимо учитывать множество моментов и написать кучу кода, для реализации каких-то возможностей. Это долго, нудно, сильно подвержено ошибкам, никакой кроссплатформенности (конечно, если не писать свой фрейворк), но дает большой контроль над происходящим.

MFC - старый, грустный, унылый фреймворк. Также никакой кроссплатформенности, не очень то прижилось даже в мелкософте. У кого-то вызывает положительные чувтсва, у кого-то рвотный рефлекс. Как по мне, то в топку его, если есть альтернативы.

Qt - мощный фреймворк для разработки, содержит множество разнообразных примочек, но для helloworld проектов как-то тяжеловат, всё равно что стрелять из пушки по комарам.

GTK+ - достаточно хороший фреймворк, но он сишный. Куча приведений типов и макросов могут превратить код в такую лапшу, что никакой вилкой не разгрести.
Gtkmm - c++ обертка для gtk+. Всё аккуратно запаковано по классам и разложено по полочкам. Как по мне, так очень даже хорош, как для больших проектов, так и для helloworld. Легко осваиваится, кроссплатформенность также в наличии.
2
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
11.07.2015, 11:08  [ТС] 9
Цитата Сообщение от Croessmah Посмотреть сообщение
Qt - мощный фреймворк для разработки, содержит множество разнообразных примочек, но для helloworld проектов как-то тяжеловат, всё равно что стрелять из пушки по комарам.
GTK+ - достаточно хороший фреймворк, но он сишный. Куча приведений типов и макросов могут превратить код в такую лапшу, что никакой вилкой не разгрести.
Gtkmm - c++ обертка для gtk+. Всё аккуратно запаковано по классам и разложено по полочкам. Как по мне, так очень даже хорош, как для больших проектов, так и для helloworld. Легко осваиваится, кроссплатформенность также в наличии.
Спрашивать что бы вы предпочли, я наверное не буду. Но то, что для создания простого пустого окна требуется всего лишь 2 строчки - с одной стороны большой плюс. Но учитывая что через WinApi на ето дело уйдет более сотни - контроль за происходящим судя по всему довольно минимальный.
И если он в целом не нужен, то Qt/Gtkmm наверное будут более оптимальным вариантом
0
11.07.2015, 11:47 10

Не по теме:

Блин, только сейчас заметил, что там gdi+, а не gtk +

0
11.07.2015, 15:34  [ТС] 11

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
Блин, только сейчас заметил, что там gdi+, а не gtk +
Но и за gtkmm тоже полезно было узнать

0
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
13.07.2015, 22:29 12
Для небольшого приложения fltk в самый раз подойдёт.
0
 Аватар для MicM
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
14.07.2015, 00:15 13
Цитата Сообщение от Kseon12 Посмотреть сообщение
Хоть я пока что пишу для себя, но хочется осваивать инструмент для создания приложений высокого уровня.
Посоветовал бы остановить выбор на Qt, т.к. довольно обширный и популярный фреймворк для создания кроссплатформенных приложений. Хорошо документирован. К тому же, Qt интегрирован с некоторыми популярными языками программирования. Например, Python - PyQt, Ruby - QtRuby и т. д.
Но интереса и кругозора ради имеет смысл поковырять WinAPI, wxWidgets, GTK+ или что-то еще. Как раз и поймете, что есть что. Тем более, как я понял, время у Вас есть.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2015, 00:15
Помогаю со студенческими работами здесь

Visual C++, какие есть способы создания GUI?
Стоит вопрос переписать программу с delphi на Visual с++,на зло программа сама сложная. Но в С++ не селен как раз в той части где требуется...

Средства для создания браузерных игр
Всем привет! У меня следующий вопрос. На чем пишутся онлайн-игры, наподобие игр от Mail.ru вроде "Города", т.е. те, в...

Unit тестирование. Есть ли встроенные средства для создания отчета?
Всем привет! Вот недавно освоил unit тесты в c#. У меня возникла такая потребность - создание отчета тестирования. В простом случае -...

Как скачать и установить средства для создания Metro-приложений?
Как скачать и установить средства для создания Metro-приложений? Здесь описано что для создания метро-приложений нужно установить ...

Перехват данных загруженой в память игры для создания gui для неё
Суть такое, есть довольно таки старя игрушка. Называется она spacestation13, создана была в 2003, студентами как симулятор газов, но потом...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Неблокируемый стек в C++26: реализуем простой сборщик мусора
stackOverflow 02.03.2025
Многопоточные приложения требуют надежных и производительных структур данных, способных эффективно работать в условиях конкурентного доступа. Неблокируемые структуры данных представляют собой особый. . .
Шаблон REQ/REP в ZeroMQ: сверхбыстрый обмен сообщениями в C++ и Python
stackOverflow 02.03.2025
Построение высоконагруженных распределенных систем требует надежного и производительного механизма обмена сообщениями. ZeroMQ выделяется среди прочих решений своей невероятной скоростью работы и. . .
Нестандартные приемы работы с итераторами в C++
stackOverflow 02.03.2025
Итераторы - один из краеугольных камней C++, предоставляющий универсальный механизм обхода и манипуляции данными в контейнерах. Появившись как замена небезопасным указателям, они эволюционировали от. . .
Лексический анализ и регулярные выражения в C++26
stackOverflow 02.03.2025
Лексический анализ - ядро любого компилятора и инструмента обработки текста. Каждый программист сталкивается с задачами парсинга строк, обработки файлов конфигурации или анализа пользовательского. . .
Подробно о std::mdspan в C++23
stackOverflow 02.03.2025
Работа с многомерными массивами данных традиционно была одной из сложных задач в C++. Программистам приходилось создавать собственные абстракции или использовать сторонние библиотеки для эффективной. . .
Колмогоровская сложность в C++: Путь к совершенному коду
stackOverflow 02.03.2025
Абстрактная математическая теория Колмогорова стала мощным средством оценки и улучшения программного кода. Сложность алгоритма - не только в его вычислительной эффективности, но и в том, насколько. . .
Изменения в C# 14
stackOverflow 02.03.2025
Одно из самых значимых изменений в C# 14 - поддержка коллекционных выражений, которые позволяют создавать и инициализировать коллекции с помощью нового лаконичного синтаксиса. Это нововведение. . .
Разработка кроссплатформен­­­­ного мобильного приложения для iOS/Android на C++
bytestream 02.03.2025
C++ как язык программирования высокого уровня с прямым доступом к аппаратным ресурсам позволяет создавать приложения, работающие одинаково быстро как на iOS, так и на Android устройствах. Ни для кого. . .
Аутентификация/авторизация на Golang
bytestream 02.03.2025
Go предлагает множество возможностей для создания надежных систем аутентификации. Встроенные криптографические пакеты, высокая производительность и простота параллельной обработки запросов делают его. . .
Нововведения TypeScript 5.8
bytestream 02.03.2025
TypeScript 5. 8 приносит много возможностей и оптимизаций, которые существенно расширяют границы типобезопасного программирования на JavaScript. Эта версия включает ряд значительных улучшений в работе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru