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

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

29.06.2015, 15:01. Показов 6094. Ответов 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
Пока-что рассмотрим "либы" для Винды. На какие библиотеки/технологии стоит обратить внимание??? ...

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

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

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

12
Администратор
Эксперт .NET
9628 / 4780 / 762
Регистрация: 17.04.2012
Сообщений: 9,629
Записей в блоге: 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
Эксперт С++
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
Неэпический
18112 / 10699 / 2062
Регистрация: 27.09.2012
Сообщений: 26,945
Записей в блоге: 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
Croessmah
11.07.2015, 11:47
  #10

Не по теме:

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

0
Kseon12
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
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
14.07.2015, 00:15
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2015, 00:15
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru