Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
#1

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

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

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

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

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

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

P.S.
По первому пункту, если бы вопрос стоял только в предстоящем собеседовании, то можно было бы просто по вакансиям поглядеть. Однако возможно есть инструменты, которые более удобны/полезны/лучше, но еще не получили распространение среди фирм.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2015, 15:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Средства для создания GUI (C++):

GUI для приложений на C++: литература и инструментарий - C++
Такое дело. Начал учить С++ с целью написания приложений под винду. Сейчас грызу плюсы, книжек накачал, IDE установил. В недалёком...

Какую IDE использовать для разработки приложений с GUI? - C++
Нужно написать программу, чтобы она нормально выглядела нужно сделать GUI, но хочу создать его в редакторе форм. QT creator скачал...

Найти библиотеку для создания 3D игры - C++
помогите найти библиотеку для создания 3D игры Добавлено через 10 минут помогите плиз:wall::(

Ищу программиста c++ для создания 2D игры - C++
Ищу программиста c++ для создания 2D игры по всем вопросам писать тут

Инструмент для быстрого создания установщиков программ - C++
Есть ли какой-нибудь инструмент для быстрого создания установщиков программ, как например InnoSetup, но для C++? Или хотя бы приближенный к...

Подскажите пожалуйста движок для создания игр с пониманием основ языка Cи и С++. - C++
Подскажите пожалуйста движок для создания игр с пониманием основ языка Cи и С++. Для начала, с чего то то нужно начинать... Просто кроме...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
tezaurismosis
Администратор
Эксперт .NET
6846 / 3216 / 494
Регистрация: 17.04.2012
Сообщений: 7,926
Записей в блоге: 14
10.07.2015, 14:05 #2
Тема для новой войны (точнее, давно не новой).
На WinAPI вам придётся писать много кода, есть библиотеки с более высоким уровнем абстракции.
Из кроссплатформенных - Qt, GTK+, wxWidgets. Первый активно развивается, второй тоже, но для него нет таких удобных средств, как Qt Creator. Третий захирел, насколько мне известно.
MFC майкрософтом уже не развивается, у них другие планы.
Берите Qt, короче говоря.
Nick Alte
Эксперт С++
1636 / 1008 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
10.07.2015, 17:49 #3
Чисто для коллекции могу предложить рассмотреть и такие направления:
а) легковесные надстройки над WinAPI, которые скрывают значительную часть "грязи", добавляют контроль типов и удобный ОО-синтаксис, но при этом конечный продукт получается практически таким же, как если бы писался на чистом WinAPI;
б) свой собственный GUI средствами OpenGL (вот уж где можно добиться высокой производительности рендеринга).
Kseon12
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. Как их заставить выглядеть лучше - вероятней всего самому рисовать и тд. Как именно я не нашел увы (более чем уверен потому что не правильно искал). Если сможете для этого какие то примеры дать - был бы весьма признателен.
Nick Alte
Эксперт С++
1636 / 1008 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
10.07.2015, 21:21 #5
Цитата Сообщение от Kseon12 Посмотреть сообщение
В качестве "легковестных надстроек", что именно вы советуете ?
Тут лучше поискать самостоятельно что-нибудь подходящее, но в качестве примера (или отправной точки) могу ткнуть пальцем в Win32++
Цитата Сообщение от Kseon12 Посмотреть сообщение
для обычного приложения - это перебор
Зависит от обстоятельств. Нынче многие приложения не стесняются прибегать к OpenGL для отрисовки интерфейса, включая LibreOffice и Qt Creator.
Цитата Сообщение от Kseon12 Посмотреть сообщение
Все элементы которые я создаю - выглядят ужасно
Это из-за дурацких сложностей с визуальными стилями. Самому рисовать не надо, надо не забыть вызвать InitCommonControls и добавить в проект манифест с нужным содержимым.
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
11.07.2015, 00:02  [ТС] #6
Цитата Сообщение от Nick Alte Посмотреть сообщение
Зависит от обстоятельств. Нынче многие приложения не стесняются прибегать к OpenGL для отрисовки интерфейса, включая LibreOffice и Qt Creator.
Тогда в целом стоит будет посмотреть в эту сторону.
Цитата Сообщение от Nick Alte Посмотреть сообщение
Это из-за дурацких сложностей с визуальными стилями. Самому рисовать не надо, надо не забыть вызвать InitCommonControls и добавить в проект манифест с нужным содержимым.
С этой функцией я столкнулся, добавляя Date Picker. Но за нее вообще ничего не знаю, как и за манифест
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
11.07.2015, 01:05 #7
Цитата Сообщение от Kseon12 Посмотреть сообщение
Я знаю про существование библиотек MFC, Qt, GDI+. WinAPI в конце концов.
C++Builder.

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

Добавлено через 6 минут
Разница между Visual C++ и C++ Builder
MFC WinApi для создания интерфейса
С++ Builder или Visual C++?
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
11.07.2015, 10:17 #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Пожалуй, выражу своё, никому не нужное мнение по поводу указаных средств
MFC, Qt, GDI+. WinAPI
Начну с WinAPI.
В силу того, что это непосредственно системные функции, необходимо учитывать множество моментов и написать кучу кода, для реализации каких-то возможностей. Это долго, нудно, сильно подвержено ошибкам, никакой кроссплатформенности (конечно, если не писать свой фрейворк), но дает большой контроль над происходящим.

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

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

GTK+ - достаточно хороший фреймворк, но он сишный. Куча приведений типов и макросов могут превратить код в такую лапшу, что никакой вилкой не разгрести.
Gtkmm - c++ обертка для gtk+. Всё аккуратно запаковано по классам и разложено по полочкам. Как по мне, так очень даже хорош, как для больших проектов, так и для helloworld. Легко осваиваится, кроссплатформенность также в наличии.
Kseon12
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 наверное будут более оптимальным вариантом
Croessmah
11.07.2015, 11:47
  #10

Не по теме:

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

Kseon12
11.07.2015, 15:34  [ТС]
  #11

Не по теме:

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

Kurles
154 / 119 / 29
Регистрация: 30.05.2015
Сообщений: 373
13.07.2015, 22:29 #12
Для небольшого приложения fltk в самый раз подойдёт.
MicM
822 / 489 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
14.07.2015, 00:15 #13
Цитата Сообщение от Kseon12 Посмотреть сообщение
Хоть я пока что пишу для себя, но хочется осваивать инструмент для создания приложений высокого уровня.
Посоветовал бы остановить выбор на Qt, т.к. довольно обширный и популярный фреймворк для создания кроссплатформенных приложений. Хорошо документирован. К тому же, Qt интегрирован с некоторыми популярными языками программирования. Например, Python - PyQt, Ruby - QtRuby и т. д.
Но интереса и кругозора ради имеет смысл поковырять WinAPI, wxWidgets, GTK+ или что-то еще. Как раз и поймете, что есть что. Тем более, как я понял, время у Вас есть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2015, 00:15
Привет! Вот еще темы с ответами:

Библиотеки и функции с++ предназначенные для создания клиент-серверных приложений работающих в интернете - C++
Хочу, написать приложение, которое бы взаимодействовало с сервером в интернете по средствам протокола http. То есть, мне нужно создать...

Знания чего необходимы для создания читов? Есть ли литература на эту тему? - C++
Есть желание создать чит для одной игрушки, в которую раньше яро задротил. Сейчас по чуть-чуть изучаю C++ и параллельно реверсинг, но у...

CASE - средства - C++
На форуме есть пара упоминаний. Однако, ничего конкретного. У меня вот какой вопрос: кто какими CASE-средствами пользовался? есть ли в...

GUI для БД - C++ Builder
кто с бд работал, как интерфейс оформляли? киньте исходники


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.07.2015, 00:15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru