Руководства по использованию 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.

https://docs.microsoft.com/en-us/windows/apps/winui/winui3/

Другие вопросы по тегам