Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 1
Регистрация: 08.09.2014
Сообщений: 122

С++, GUI, Windows

29.04.2025, 18:24. Показов 6345. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Коллеги, добрый день. Возникла задачка написать GUI приложение под Windows 10, 11, желательно на С++, можно и на С#. Я под Windows программировал GUI в последний раз года 3 назад и там я использовал Win32 API, вопрос такой, на чем сейчас программируют нативные приложения под современную винду? Знаю что WinForms от C# признаны устаревшими, а если не ими, то чем, но не считая разумеется Win32 API. От самой Microsoft есть хоть что то?

Всем заранее спасибо за ответы!)))
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.04.2025, 18:24
Ответы с готовыми решениями:

Как запустить qt gui программу, как демон, без gui, скрыв gui?
Как запустить qt gui программу, как демон, без gui, скрыв gui? В gui браузер выполняет...

Как запустить GUI приложение (например, notepad.exe) без отображения GUI?
Добрый день. Интересует есть ли такая возможность, как запустить GUI приложение (например,...

Как лучше и быстрее из SQL в QVector и в GUI или сразу из SQL в GUI
Доброе время суток! Ну собственно вопрос в теме, как лучше сделать. Сначала прочитать SQLite в...

14
-19 / 11 / 2
Регистрация: 13.10.2021
Сообщений: 51
29.04.2025, 18:31
1. WinUI 3
2. WPF
3. UWP
4. Qt(не от ms, но безумно популярен)
5. Avalonia(альтернатива WPF)
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
29.04.2025, 22:13
Лучший ответ Сообщение было отмечено unlimeted как решение

Решение

Цитата Сообщение от unlimeted Посмотреть сообщение
на чем сейчас программируют нативные приложения под современную винду?
От макйрософта всё современное полное удобрение, к сожалению.
У них как всегда "свое" видение.

А вообще, они уже давно решили, что все должны пользоваться только их онлайн сервисами и к этому стремятся, забив на классические приложения.
1
5 / 5 / 0
Регистрация: 28.12.2019
Сообщений: 26
29.05.2025, 08:50
ImGui (https://github.com/ocornut/imgui)
Это такая либа, которую нужно в качестве кода (все файлы, и h и cpp) скопировать в свой проект и собрать вместе.
По факту она одна из лучших (если не единственная поддерживаемая осталась), которую используют в хреновой тонне приложений, особенно в 3D, играх и пр. Лично я пишу 3DCAD с интерфейсом на ней, но его скрины я показать не могу, т.к. это коммерческая тайна пока что (разработка идёт), да и не узнал бы ты в моём софте ImGUI, т.к. она полностью кастомизирована, с кучей кастомных контролов и дизайнерских текстур.

Сразу скажу, это immidiate mode, то есть это не как в Qt, где есть тормозные сигналы и слоты, это прямой рендер и с непосредственной проверкой прямо в кадре, мол была нажата кнопка или нет.

Это библиотека кроссплатформенная, кроссрендерная и кроссфреймворкная.
Я использую её с бэнэндом Vulkan API (т.к. у меня рендер на нём), но доступны и другие варианты:
Renderers: DirectX9, DirectX10, DirectX11, DirectX12, Metal, OpenGL/ES/ES2, SDL_GPU, SDL_Renderer2/3, Vulkan, WebGPU.
Platforms: GLFW, SDL2/SDL3, Win32, Glut, OSX, Android.
У меня код, разумеется, на С++, но для ImGUI есть следующее байндинги (к слову, они почти все авто генерейтед, там есть генератор и ты можешь даже под свой какой-то язык байдинг замутить). Если ты пишешь на С++, ничего делать не нужно, т.к. ImGui сама написана на С++:
:
Languages: C, C# and: Beef, ChaiScript, CovScript, Crystal, D, Go, Haskell, Haxe/hxcpp, Java, JavaScript, Julia, Kotlin, Lobster, Lua, Nim, Odin, Pascal, PureBasic, Python, ReaScript, Ruby, Rust, Swift, Zig...
Ну короче сам почитай по ссылке сверху.

Официальные примеры GUI во вложении.
Миниатюры
С++, GUI, Windows   С++, GUI, Windows   С++, GUI, Windows  

0
Модератор
Эксперт Java
 Аватар для alecss131
2880 / 1384 / 411
Регистрация: 11.08.2017
Сообщений: 4,413
Записей в блоге: 2
29.05.2025, 21:16
Цитата Сообщение от hyper_doom Посмотреть сообщение
тормозные сигналы и слоты
Что в них тормозного? А а сам сделаешь обработку событий куда лучше и производительнее, тем более что для этой поделки нужен основной бесконечный цикл и все события обрабатывать надо грубо говоря с помощью колбэков.
Да и эта либа не умеет ничего, то есть ей надо предоставить окно, загружать картинки причем сразу на граф апи и тд.
Как вспомогательный вариант для графики в уже имеющийся проект на графическом апи сойдет, но как основной гуи компонент крайне сомнительно. Да и постоянные смены и настройки контекста, ну такое себе тоже.
В том же Qt можно довольно легко и быстро переписать все нужные элементы и сделать неповторимый гуй, а тут возиться будешь прилично, если разберешься вообще.
0
5 / 5 / 0
Регистрация: 28.12.2019
Сообщений: 26
04.06.2025, 10:00
Цитата Сообщение от alecss131 Посмотреть сообщение
Что в них тормозного?
то, что они медленные, хороший FPS в игре с таким GUI не получишь. Более того, раньше они вообще были текстовые, но с какой-то версии вроде начали компилироваться в бинарный вид. Вот ты попробуй поводи быстро мышкой по экрану в Qt, потаскай какой-то графический Item по экрану - увидишь, что там приличный временной лаг, то есть как бы шлейф за мышью, т.к. gui отстаёт. А теперь открой любой софт на чистом WinAPI или MFC или на кстомном рендере (MS Word, AutoCAD и пр.) и сразу же увидишь разницу. +там все эти ивечные проблемы со сглаживанием и замыливанием шрифтом, в результате чего они выглядят неестественно...
Цитата Сообщение от alecss131 Посмотреть сообщение
А а сам сделаешь обработку событий куда лучше и производительнее, тем более что для этой поделки нужен основной бесконечный цикл и все события обрабатывать надо грубо говоря с помощью колбэков.
и чего тут сложного? У меня так всё и устроено. К слову, бесконечный цикл нужен в игре, а в негреющем постоянно GPU софте нужно ждать GetMessage (под виндой).
Цитата Сообщение от alecss131 Посмотреть сообщение
Да и эта либа не умеет ничего
это да, по сравнению с Qt там практически bare metal, приходится многое делать самому, хотя кое-что доступно из коробки, точнее даже много чего, но это только в том случае, если тебя устраивают дефолтные котролы и стиль gui, а если нет - всё с нуля, но зато производительность ты сам контролируешь. Согласен, всё это не для новичков.
Цитата Сообщение от alecss131 Посмотреть сообщение
В том же Qt
Qt официально ушёл из РФ, его даже скачать теперь по человечески нельзя, только через всякие VPN-ы.
Кстати, встроить Qt в уже готовый проект не получится, а imgui - получится, да, но и так же встроить готовый рендер на том же Vulkan API в gui на Qt тоже ещё то занятие, нужно подстраиваться под все эти "прокладки" кутешные для вулкана.
p.s.: у Qt остался хоть LGPL или полностью уже в коммерцию скатился? В любом случае, к этому всё и идёт.
0
фрилансер
 Аватар для Алексей1153
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
04.06.2025, 12:22
Цитата Сообщение от hyper_doom Посмотреть сообщение
Вот ты попробуй поводи быстро мышкой по экрану в Qt, потаскай какой-то графический Item по экрану - увидишь, что там приличный временной лаг, то есть как бы шлейф за мышью, т.к. gui отстаёт.
я не замечал такого ни разу.

Либо это нужно такой комп ещё поискать, где это проявится
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
04.06.2025, 14:35
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Либо это нужно такой комп ещё поискать, где это проявится
Помню такое было без всяких QT.
Поэтому выключал отображение содержимого окон при перетаскивании =) (WinXP кажется и одноядерный целерончик, не буду врать про частоту его, не помню точно (200-400МГц))
Но гуй всё равно писали не на opengl(и т.д.).
А сейчас такое писать/предлагать/отстаивать.
0
5 / 5 / 0
Регистрация: 28.12.2019
Сообщений: 26
04.06.2025, 14:50
Цитата Сообщение от SmallEvil Посмотреть сообщение
А сейчас такое писать/предлагать/отстаивать.
вот когда у тебя будет миллион строк в коде и QtCreator будет постоянно падать в отладке, т.к. он тупо не умеет нормально работать со студийными отладчиками и компиляторами, вот тогда меня вспомнишь... а работать из студии через какие-то плагины с Qt - тоже хрень. Qt - это инструмент для быстрого прототипирования всякого микро софта, для чего-то более серьёзного он, разумеется, не годится, да и потом, как я уже сказал, он ушёл из РФ и применять его здесь в продакшене вообще не разумно.

Цитата Сообщение от Алексей1153 Посмотреть сообщение
я не замечал такого ни разу.
открой хотя бы ms word, а лучше AutoCAD или 3DS Max и поводи мышкой по меню, а потом открой софт на Qt и сделай тоже самое с Qt-шными меню - разница будет на лицо (не в пользу Qt), а если в проекте Qt есть ещё что-то кроме меню, например, большой gui - разница станет ещё больше.
0
Модератор
Эксперт Java
 Аватар для alecss131
2880 / 1384 / 411
Регистрация: 11.08.2017
Сообщений: 4,413
Записей в блоге: 2
04.06.2025, 15:38
Цитата Сообщение от hyper_doom Посмотреть сообщение
AutoCAD или 3DS Max
Цитата Сообщение от hyper_doom Посмотреть сообщение
открой софт на Qt и сделай тоже самое с Qt-шными меню
Ну как бы указанный софт и так написан на Qt, что макс, что автокад. Знаю о чем пишу, макс очень хорошо знаю и писал для него плагины.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
04.06.2025, 16:14
Цитата Сообщение от alecss131 Посмотреть сообщение
3DS Max
Цитата Сообщение от alecss131 Посмотреть сообщение
и так написан на Qt
Не нашел этому подтверждения.
Только то что плагины можно на QT писать для него.
Starting with 3ds Max 2017, you can use the popular cross-platform development package Qt to create the user interface for your 3ds Max plug-in. See the maxsdk\include\Qt directory for headers exposing utilities for integrating Qt, as well as some customized Qt widgets used in the 3ds Max UI. Some of the standard plug-ins shipped with 3ds Max use Qt for their UI, and you can look at these in the SDK samples collection. Look at the maxsdk/samples/systems/sunlight project for an example of a plug-in that uses Qt for its UI.
0
Модератор
Эксперт Java
 Аватар для alecss131
2880 / 1384 / 411
Регистрация: 11.08.2017
Сообщений: 4,413
Записей в блоге: 2
04.06.2025, 16:30
Цитата Сообщение от SmallEvil Посмотреть сообщение
Не нашел этому подтверждения.
Только то что плагины можно на QT писать для него.
Как можно писать на Qt плагины когда интерфейс построен не на нем же?
Там в самой программе куча запчастей от Qt. Тащить их специально для плагинов? Еще там в комплекте идет вроде еще и PySide
А как же слова?
Цитата Сообщение от SmallEvil Посмотреть сообщение
as well as some customized Qt widgets used in the 3ds Max UI
некоторые настраиваемые виджеты Qt, используемые в пользовательском интерфейсе 3ds Max
Немного погуглил вопрос, похоже до 17 версии он был написан на винапи, а с 17-18 начал Qt-фицироваться.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
04.06.2025, 17:18
Цитата Сообщение от alecss131 Посмотреть сообщение
Как можно писать на Qt плагины когда интерфейс построен не на нем же?
Легко.
Основная программа - одно.
Плагины - другое.

Зачастую плагины могут быть написаны на чем угодно.
Главное что бы поддерживали интерфейс плагина.
Почему бы разработчику не упростить процесс создания плагинов?

Цитата Сообщение от alecss131 Посмотреть сообщение
Там в самой программе куча запчастей от Qt. Тащить их специально для плагинов?
Да. А как они будут работать?
Каждый будет тащить свою тонну говназависимостей?

Вообще мне без разницы.
Это я так, к слову.
0
фрилансер
 Аватар для Алексей1153
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
04.06.2025, 18:34
Цитата Сообщение от hyper_doom Посмотреть сообщение
открой хотя бы ms word, а лучше AutoCAD или 3DS Max
у меня нет на компе этого всего

но я пишу приложения на Qt, и я не замечал проблем даже в дебажных версиях
0
Модератор
Эксперт Java
 Аватар для alecss131
2880 / 1384 / 411
Регистрация: 11.08.2017
Сообщений: 4,413
Записей в блоге: 2
04.06.2025, 21:20
Цитата Сообщение от hyper_doom Посмотреть сообщение
3DS Max и поводи мышкой по меню, а потом открой софт на Qt и сделай тоже самое с Qt-шными меню
Кстати, Maya уж точно написана на Qt и при этом весит куда меньше, кроссплатформенная и работает куда шустрее Макса, Макс куда дольше запускается и вообще довольно тяжелый в плане ресурсов. Или взять тот же Гудини, тоже Qt, проблем не замечал. А вообще много 3д и cad софта написаны на Qt
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.06.2025, 21:20
Помогаю со студенческими работами здесь

Библиотека GUI для Windows
Я никак не могу МФС разобрать :), уже 2 года MFCучу :)

Графические и GUI библиотеки для С++ под чистый компилятор (MinGW 64bit Windows) без IDE?
Подскажите пожалуйста Графические и GUI библиотеки для С++ под компилятор MinGW 64bit Windows, но...

Windows XP & Windows 7
Привет. Вобщем пишу программу для пользователей моего провайдера. Написать программу - моя...

Программировани Shell для Windows (замена Windows Explorer)
Если да. то поделитесь пожалуйста исходниками или на худой конец ссылками на OpenSource проектами...

Windows 8 или Windows 7 для C++Builder 6 что делать и как
Здравствуйте. Есть такой вопрос на Windows 8 идет нормально с++Builder 6 или так же, как и на...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru