Руководства по использованию WinUI с C++
Я постараюсь кратко изложить свою проблему:
- У меня есть устаревший проект C++, который использует WinAPI для создания элементов пользовательского интерфейса и управления ими. Я хочу заменить это более современным фреймворком, который поддерживает ООП и имеет своего рода визуальный дизайнер. Я намереваюсь достичь этого, постепенно заменяя старый код на основе WinAPI новым фреймворком (например, я мог бы ввести новое всплывающее окно, которое использует новый фреймворк, в то время как остальная часть пользовательского интерфейса будет по-прежнему использовать старые оконные процедуры и еще много чего)
- Мой первоначальный план состоял в том, чтобы использовать Qt, поскольку он позволяет мне удобно оборачивать UI-код в объекты, которые я могу легко создавать и управлять ими. В нем также есть конструктор, который позволяет мне создавать настраиваемые элементы пользовательского интерфейса (включая автоматическое управление компоновкой), расширение Visual Studio, и в целом прошлый опыт показал мне, что Qt вполне подходит для моих целей. Однако здесь пользователи предупредили меня, что он плохо взаимодействует с WinAPI, и мне, по сути, придется перестраивать приложение с нуля.
- Было предложено использовать вместо этого WinUI, то есть XAML в сочетании с C++/WinRT, поскольку они предположительно предлагают ту же гибкость, что и то, что я описал выше. Мне удалось успешно воспроизвести результаты руководства " Управление хостом UWP в приложении Win32", но, похоже, кроме этого мало полезного материала.
- В документации Microsoft довольно сложно ориентироваться, чтобы получить четкий ответ. На данный момент приведенное выше руководство наводит меня на мысль, что я все еще застрял бы с использованием WinAPI, поскольку, похоже, нет очевидного способа обернуть код пользовательского интерфейса в объекты, предпочтительно те, которые я могу получить из существующей базы классы (например, какой-то базовый объект Window)
У меня есть следующая среда для работы:
- Последний уровень функций C++, поддерживаемый MSVC
- Visual Studio 2019
- Windows 10 (т.е. я не возражаю, если я больше не совместим с операционными системами Windows)
Что мне нужно:
Явный ответ на вопрос, можно ли работать с XAML и C++ / WinRT аналогично тому, как разрабатывают код пользовательского интерфейса в Qt с помощью C++. Точная четность не нужна, я просто хочу избавиться от хлопот с управлением пользовательским интерфейсом с помощью WinAPI, где мне практически все приходится делать "вручную"
Если все вышесказанное верно, то где я могу найти руководства по различным этапам рабочего процесса? Как создать "объект окна", как создать окно с управлением компоновкой, как обработать события пользовательского интерфейса и т. Д.?
В равной ли степени возможно ли вышесказанное, если это нужно сделать в контексте устаревшего приложения WinAPI, которое я пытаюсь обновить?
1 ответ
Теперь у вас есть новая опция - WinUI 3
WinUI 3 предлагает XAML и пользовательский интерфейс "Современное приложение" из C++, за исключением того, что переход на платформу WinRT не прерывается (он может нормально работать с простым старым Win32). Так что он идеально подходит для устаревшего проекта C++ в Windows.