Современный, собственный способ создания графических приложений WinAPI в С++
Во-первых, я знаю, что это своего рода общий вопрос, но я не мог найти точный ответ, который я ищу.
Я сделал много проектов на Java с помощью Swing. Начиная с простого кодирования GUI, а затем перейдя на дизайнеры GUI. Это оказалось очень быстрым и простым способом создания графических приложений.
Но теперь мне нужно перейти на С++. Я начинаю проект, который использует много ресурсов HW (DirectX, OpenCV и т.д.). Я знаю, что для этих технологий существуют библиотеки Java. Однако С++ - это, безусловно, правильный путь, учитывая внутренности этого проекта.
Я хорошо знаю языки C и С++ из программирования MCU. Кроме того, я прочитал много статей о собственных программах WinAPI, внутренних компонентах Windows и т.д. Я думаю, что у меня достаточно знаний для начала. Я не хочу волноваться о дизайне GUI, но он должен выглядеть соответствующим образом.
Я знаю, что есть несколько базовых возможностей: Pure WinAPI, MFC, WTL, Qt... Я был бы очень рад, если бы был какой-то инструмент для создания графического интерфейса, но из моих исследований этого нет. Существует мастер MFC, который помогает создать базовое окно, но это не дизайнер. Самое близкое, что я нашел, это Qt. Но из того, что я читал, он не использует WinAPI для рисования, поскольку в будущем внешний вид Qt написанного приложения может отличаться от обычного внешнего вида Windows.
Итак, чтобы суммировать, пожалуйста, если у вас есть опыт создания собственных приложений Windows С++ с графическим интерфейсом, что бы вы мне порекомендовали? В частности, есть ли какой-нибудь инструмент или дизайнер, которого я пропустил?
(Я использую профессионал Visual Studio 2010, так как у меня есть это бесплатно благодаря проекту DreamSpark)
Ответы
Ответ 1
Недавно я использовал Qt4 и был очень доволен API. Я нашел это простым, хорошо документированным, и код очень краток.
Qt очень хорошо справляется с эмуляцией внешнего вида и ощущения целевой ОС (как заметил в комментариях QIn Silico, Qt на самом деле рисует все сам и не использует собственные компоненты). Несмотря на это, это может быть закодировано вручную или визуально через редактор графического интерфейса в своей среде IDE, Qt Creator. Если вы идете по этому маршруту, я рекомендую создать ваш первоначальный проект GUI (.pro
файл), а затем импортировать его в Visual Studio с помощью Qt Visual Studio Add-In.
Также следует отметить слоты и сигналы, систему событий/сообщений Qt. Да, это очень важно для программирования GUI, но также может быть чрезвычайно полезным в коде нижнего уровня.
Я ожидаю, что Qt будет хорошо работать в вашем проекте, но, как всегда, создайте несколько простых тестов, чтобы гарантировать, что технологии будут работать вместе.
Ответ 2
Вы можете использовать С++ Builder XE2 (часть Rad Studio IDE), которая включает VCL (Visual Component Library), VCL является оболочкой над элементами управления Windows (а также включает в себя настраиваемые элементы управления), которые увеличивают производительность разработки.
Ответ 3
Вот несколько советов:
-
Не запирайтесь на С++. С# и Java (например) можно легко взаимодействовать с C/С++. (Через PInvoke или С++/CLI для первого и JNI для более позднего). С++ не может быть идеальным языком для быстрого написания графического интерфейса.
-
Ваше требование для "родного просмотра окон" произвольно, и вы должны подумать об этом. Это действительно то, что вам нужно?
-
Winforms. Это более старая технология, но по-прежнему широко используется. Вы используете API с языка С++/CLI или С# (или любого .NET).
-
WPF, более новый API, но с С++ будет сложнее справиться (лучше с С# или VB)
-
Один из многих инструментов инструментария GUI, доступных на рынке, которые имеют C или С++ API (QT, GTK, wxWidgets, VCL,... здесь). У некоторых есть "родные" взгляды, некоторые - нет. У некоторых есть дизайнеры, которых нет. Некоторые из них бесплатны, некоторые - нет.
Ответ 4
Если вам нужен простой пользовательский интерфейс, я рекомендую использовать WTL - это простая, легкая библиотека только для заголовков, очень хорошая оболочка над WinAPI. В Visual Studio вы можете использовать конструктор форм для создания окон и использовать классы WTL для взаимодействия с пользователем. WTL имеет плохую документацию, но WTL похож на MFC.
Если вам нужны богатые возможности, я рекомендую использовать Qt. Это очень мощная инфраструктура графического интерфейса с отличным сообществом.
Ответ 5
wxWidgets Библиотека классов С++ поставляется с screen builder.
Ответ 6
VCL - хороший способ пойти. Он имеет GUI дизайнер инструмент (Embarcadero Rad Studio XE6) полностью родной разработчик gui для С++ и Delphi
Ответ 7
В зависимости от того, насколько строго определено ваше определение, вы можете использовать .NET Windows Forms или Windows Presentation Foundation и подключайте логику от С++, С++/CLI и С#. Это не было бы чистым решением на С++. На самом деле, я даже не обязательно советовал бы использовать С++ в этой ситуации. Просто использование С# было бы более интуитивным и поддерживаемым. У WinForms и WPF есть довольно удивительные дизайнеры графического интерфейса.