Как создать графический интерфейс для приложения Windows, используя C ++? - PullRequest
24 голосов
/ 28 января 2009

Я решаю, как разработать графический интерфейс для небольшого api-проекта c ++ / win32 (работает Visual Studio C ++ 2008). Проекту потребуется всего несколько компонентов для запуска основного процесса, поэтому он будет очень легким (всего 1 кнопка и текстовое поле в значительной степени ...). У меня вопрос такой:

У меня нет опыта разработки графических интерфейсов для Windows, но я могу легко учиться. Итак, что я должен использовать? Визуальный редактор (генерация кода с помощью перетаскивания): мои предпочтения в проектировании графического интерфейса для настольных компьютеров (java / swing)). Или я должен использовать специальную библиотеку? В любом случае, какую библиотеку или визуальный редактор я должен использовать? Я слышал, как кто-то упоминал о написании графического интерфейса в C #, а затем о вызове кода C ++ ... дело в том, что это такой простой графический интерфейс, мне было бы проще просто сохранить все это в C ++, но я открыт для любого лучшее предложение.

Ответы [ 11 ]

15 голосов
/ 28 января 2009

безусловно лучшая библиотека C ++ GUI из существующих Qt , она всеобъемлющая, простая в изучении, действительно быстрая и многоплатформенная.

ах, недавно она получила лицензию LGPL, так что теперь вы можете скачать ее бесплатно и включить в коммерческие программы

13 голосов
/ 28 января 2009

Если вы используете очень простой графический интерфейс и уже используете Visual Studio, то, возможно, имеет смысл просто перейти на MFC. Вы можете просто использовать мастер Visual Studio MFC для создания диалогового приложения, добавить на него два элемента управления и все готово.

MFC устарел и имеет немало недовольств, но он наверняка сработает за вас, если вы просто говорите о кнопке и текстовом поле.

У меня нет опыта работы с Qt, поэтому я не могу их сравнить.

9 голосов
/ 28 января 2009

Я настоятельно предпочитаю просто использовать Microsoft Visual Studio и написать собственное приложение Win32.

Для простого графического интерфейса пользователя, который вы описываете, вы можете просто создать Диалоговое окно и использовать его в качестве основного окна приложения. Приложение по умолчанию, созданное мастером Win32 Project в Visual Studio, фактически открывает окно, поэтому вы можете заменить это окно своим диалоговым окном и заменить WndProc аналогичным (но более простым) DialogProc * 1008. *.

Таким образом, вопрос заключается в инструментах и ​​стоимости. Express Edition в Visual C ++ делает все, что вам нужно, за исключением фактического создания ресурса шаблона диалога. Для этого вы можете либо кодировать его в RC-файле вручную , либо в памяти вручную . Связанный вопрос SO: Диалоги Windows API без использования файлов ресурсов .

Или вы можете попробовать один из бесплатных редакторов ресурсов , рекомендованных другими.

Наконец, Visual Studio 2008 Standard Edition - более дорогой вариант, но предоставляет встроенный редактор ресурсов.

3 голосов
/ 28 января 2009

Я настоятельно не рекомендую использовать простой Win32, потому что довольно сложно заставить его работать нормально во всех ситуациях, это довольно скучная и утомительная работа, а библиотека Common Controls не , что завершено. Кроме того, большая часть работы была сделана для вас.

Каждый раз, когда я в конечном итоге делаю простой Win32, мне приходится тратить как минимум пару часов на самые тривиальные задачи, потому что мне приходится искать все параметры, флаги, функции, макросы и выяснять, как их правильно подключить. , Как правило, я бы предпочел простой способ перетаскивания мышью «сделай и не используй мои мозги» и просто соединил все это за 2 минуты.

В качестве облегченного инструментария я бы предложил omgui , который имеет чистый и красивый API. Однако он не поставляется с какими-либо инструментами.

Если вам нужна поддержка инструментов, вы, вероятно, в конечном итоге захотите использовать либо MFC (редактор ресурсов, встроенный в Visual Studio), либо Qt. Я не знаю, есть ли в wxWidgets какие-либо инструменты, но я предполагаю, что у него есть.

Редактировать: Дэвид Цитрон упоминает, что редактор ресурсов в Visual Studio, очевидно, генерирует файлы ресурсов, совместимые с Win32, так что это, вероятно, предпочтительный способ сделать что-то, если вы хотите, чтобы все было просто.

3 голосов
/ 28 января 2009

Просто создайте новое приложение MFC C ++. Он встроен, довольно прост, и в мире существуют тысячи примеров ...

Кроме того, вы можете создать свое диалоговое окно прямо в Visual Studio, дать им имена переменных, и 90% кода будет сгенерировано для вас.

2 голосов
/ 29 января 2009

Избегайте QT (для noobs) или любых бесполезных библиотек (абсурдно для такой простой вещи)

Просто используйте мастер VS Win32 api, добавьте кнопку и текстовое поле ... и все!

За 25 секунд!

2 голосов
/ 28 января 2009

Для такого простого применения даже MFC будет излишним. Если не хотите вводить другую зависимость, просто сделайте это в простом ванильном Win32. Вам будет легче, если вы никогда не использовали MFC.

Ознакомьтесь с классическим «Программированием Windows» Чарльза Петцольда или некоторым онлайн-учебником (например, http://www.winprog.org/tutorial/), и вы готовы к работе.

2 голосов
/ 28 января 2009

Qt от Nokia - определенно лучший способ. Другой вариант - gtk, но Qt лучше поддерживается и документируется. В любом случае, они оба бесплатны. И оба они широко используются и известны, поэтому легко найти ответы на ваши вопросы.

1 голос
/ 29 января 2009

Простое «окно» с текстом и кнопкой - это просто MessageBox. Вы можете создать их одним вызовом функции; вам не нужна никакая библиотека.

1 голос
/ 28 января 2009

Если вы хотите узнать о win32, WTL http://wtl.sourceforge.net/ - довольно легкий эквивалент MFC, но вы должны любить шаблон, чтобы использовать его.

Если вы хотите, чтобы что-то простое MFC уже интегрировалось с VS, оно также имеет большую базу дополнительного кода и обходных путей известных ошибок в сети.

Кроме того, Qt - действительно отличный фреймворк, в котором есть хороший набор инструментов, редактор диалогов, темы и множество других вещей, плюс ваше приложение будет готово к кроссплатформенности, хотя для его освоения потребуется некоторое время.

У вас также есть Gtk, wxWindow, и у вас не возникнет проблем, если вы уже использовали его в Linux.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...