Подтвердить что ты не робот

Современный, собственный способ создания графических приложений 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)

4b9b3361

Ответ 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. Это очень мощная инфраструктура графического интерфейса с отличным сообществом.

Ответ 6

VCL - хороший способ пойти. Он имеет GUI дизайнер инструмент (Embarcadero Rad Studio XE6) полностью родной разработчик gui для С++ и Delphi

Ответ 7

В зависимости от того, насколько строго определено ваше определение, вы можете использовать .NET Windows Forms или Windows Presentation Foundation и подключайте логику от С++, С++/CLI и С#. Это не было бы чистым решением на С++. На самом деле, я даже не обязательно советовал бы использовать С++ в этой ситуации. Просто использование С# было бы более интуитивным и поддерживаемым. У WinForms и WPF есть довольно удивительные дизайнеры графического интерфейса.