Советы по программированию на C ++ GUI - PullRequest
16 голосов
/ 18 мая 2009

Я пишу консольные / CMD-приложения на C ++ уже около года и хотел бы войти в приложения с графическим интерфейсом Windows. Для тех из вас, кто уже прошел этот путь, какие советы / советы вы можете дать мне. Пример: хорошие чтения, учебные пособия, тактика захода на посадку и т.д ...

Я знаю, что это действительно широкий вопрос, но я действительно не знаю, как / с чего начать, не зная, как правильно задать этот вопрос.

Ответы [ 11 ]

36 голосов
/ 18 мая 2009

Я настоятельно рекомендую использовать библиотеки Qt по нескольким причинам:

  1. Framework свободно доступен для Windows, Linux, MacOS X и нескольких мобильных систем. Начиная с версии 4.5 лицензия LGPL, что означает, что вы можете использовать Qt даже в коммерческих приложениях.
  2. дизайн Qt является выдающимся, например, они используют современные шаблоны проектирования и очень последовательный дизайн интерфейса (я не знаю многих других библиотек, которые используют объектно-ориентированные идеи в таком совершенстве). Использование Qt аналогично использованию Boost: оно улучшит ваши собственные навыки программирования, потому что они используют такие прекрасные концепции!
  3. Они чертовски быстрые, например, при рендеринге (из-за разного бэкенда для OpenGL, DirectX и т. Д.). Просто посмотрите на это видео , и вы увидите, что можно легко сделать с помощью Qt, но трудно сделать с помощью программирования на Windows, Mac или Linux.
  4. У них действительно отличная документация , с кучей учебников и очень хорошим справочником. Вы можете легко начать изучение Qt с помощью данной документации! Документация также доступна онлайн , так что посмотрите сами.
  5. Как упоминалось ранее, Qt является кроссплатформенным ; у вас есть одна исходная база, которая работает во всех важных операционных системах. Почему вы ограничиваете себя Windows, если вы также можете использовать Mac и Linux «бесплатно»?
  6. Qt - это намного больше , чем "просто" пользовательский интерфейс; они также предлагают функциональность сети и базы данных, привязки OpenGL, полнофункциональный элемент управления веб-браузером (на основе WebKit), библиотеку воспроизведения мультимедиа и многое другое.

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

8 голосов
/ 18 мая 2009

Для C ++ у вас есть два варианта, Native или Managed.

Для собственной разработки моя команда (в Microsoft, в Windows) использует Библиотека шаблонов Windows . Это работает очень хорошо для нас.

Вы должны изучить основы Win32 и то, как работает Windowing. Канонический том - Программирование Windows®

Для управляемой разработки вы можете использовать C ++ с Windows Forms . Однако формы Windows были заменены Windows Presentation Foundation (WPF) .

4 голосов
/ 18 мая 2009

Мой лучший совет по программированию в Windows C ++ GUI - не программируйте в Windows C ++.

Я понимаю, что это крайне неинформативный / умный ответ, если он не квалифицирован, поэтому отмечу, что вы не утверждаете, что вам нужно для программирования на C ++ Windows GUI, но вы "хотели бы хотел бы войти в приложения Windows GUI. " Если это так, и у вас нет особой причины использовать C ++ (то есть гигантскую существующую унаследованную кодовую базу, написанную на MFC или набор кода на C ++, для которого вы хотите создать интерфейс, но это будет проблемой для доступ к коду .NET), тогда будет намного проще и продуктивнее пойти по пути .NET и начать изучать Windows Forms или еще лучше, но WPF, используя C # или другой язык .NET на ваш выбор.

Если вам действительно нужно перейти на C ++, я бы привел рекомендации для сторонних наборов инструментов, таких как Qt или wxWidgets, так как состояние инструментов программирования C / C ++ GUI от Microsoft теперь ужасно.

4 голосов
/ 18 мая 2009

Большинство оконных библиотек и технологий используют сходные идиомы. Выберите один и изучите его.

Библиотека шаблонов Windows - это очень приятный шрифт для Microsoft Windows, в то время как она работает с C ++.

Для кроссплатформенных оконных инструментов C ++ (они работают на Microsoft Windows и на других платформах) вы можете попробовать QT или wxWidgets .

3 голосов
/ 18 мая 2009

Что касается графического интерфейса Windows, привыкните часто ссылаться на MSDN, предполагая, что вы хотите иметь дело с API напрямую.

Моим любимым ресурсом для изучения основ был учебник по Forger , но существуют сотни книг и других сайтов.

2 голосов
/ 18 мая 2009

Полагаю, важное место для начала - ваш инструментарий. Вы пометили этот VisualC ++, поэтому я предполагаю, что вы смотрите на это, однако помните, что есть и другие наборы инструментов, например Qt.

Я бы предложил начать с Руководства Microsoft .

1 голос
/ 27 апреля 2012

Отложите в сторону WPF или VC ++ или Qt. Вы также можете попробовать несколько библиотек, таких как:

OpenFrameworks Обработка ...

здесь есть активный проект по разработке Gui с Openframeworks:
http://www.syedrezaali.com/blog/?p=2172

1 голос
/ 03 ноября 2011

Первый вопрос: хотите ли вы разрабатывать бесплатные, открытые исходные коды для личного использования или коммерческие приложения на C ++?

  1. Если вы хотите разрабатывать для личного использования! Затем вы можете использовать хороший инструментарий C ++, Framework или API.
  2. Если вы хотите разработать приложение с графическим интерфейсом, которое будет открытым или бесплатным. Затем вы можете использовать C ++ Toolkits, Frameworks или API, которые имеют GPL или любую лицензию с открытым исходным кодом, которая соответствует вашим потребностям.
  3. Даже вы можете разрабатывать коммерческие приложения с помощью наборов инструментов с открытым исходным кодом, каркасов или API, имеющих лицензию LGPL.

Второй вопрос: что вы хотите разработать для Windows, Mac, Unix или Linux? или это все, даже для мобильной платформы?

  1. Если у вас есть пользователь Windows, как и я, и вы хотите разрабатывать только для Windows, я имею в виду не для кроссплатформенности, вы можете пойти с Win32 API, хотя, изучить Win32 API сложнее, но это дает вам полный контроль над машиной. Поверьте мне, ни один другой инструмент не обеспечит вам полный контроль над машиной. Если вам по какой-то причине не нравится Win32 API, вы можете использовать MFC, которая является еще одной технологией от Microsoft, но не является бесплатной, устаревшей и которой уделяется меньше внимания в наши дни. Если вы решили разрабатывать на платформе .NET, у вас есть C ++ / CLI, расширение языка C ++ для разработки приложений .NET. .NET предоставляет вам безопасность типов, ООП и встроенный сборщик мусора, предоставляет вам все API, связанные с Windows и x86 или x64, в одном пакете. У .NET свой мир! Microsoft решила портировать .NET и на другие операционные системы, например, проект Mono ... Вы можете разрабатывать почти все виды приложений, используя .NET.

  2. Если вы хотите разрабатывать C ++ GUI-приложения для кроссплатформенности, тогда Qt, WxWidgets и U ++ доступны для вашей помощи. Вы можете написать один раз и развернуть в любом месте с этими библиотеками. Многие IDE с открытым исходным кодом и компиляторы также доступны для простой разработки приложений на C ++. Обратите внимание, что если вы не хотите разрабатывать для кроссплатформенности, любая кроссплатформенная библиотека будет иметь накладные расходы и неизбежно увеличить размер исполняемых файлов.

Достаточно ли хороши ваши знания C ++ для программирования программных систем?

На самом деле, если ваши знания C ++ недостаточно глубоки, и вы не понимаете такие методы программирования, как ООП, Encupsolation, Классы, Интерфейсы, Типы, Шаблоны программирования и т. Д., Вы не можете использовать любой инструментарий с полным потенциалом. Не забывайте, что каждый Toolkit, Framework или API реализован на каком-то языке программирования. Если вы хорошо понимаете язык, вы можете очень хорошо использовать инструментарий. Я думаю, вы бы поняли мою точку зрения.

1 голос
/ 18 мая 2009

Прошло так много времени с тех пор, как я работал с C ++ в Windows GUI, мое слово всегда избегать C ++ в Windows GUI, если у вас нет очень веских причин, я имею в виду хорошую чертову причину, если вам нужна производительность, C # больше, чем этого достаточно для 90% случаев, и если вам нужно больше мощности, напишите критически важную для производительности вещь в DLL C ++ и вызовите ее из приложения Windows Forms или WPF. Это сэкономит вам чертовски много времени. Тем не менее, мое мнение, если у вас есть другой, я полностью уважаю это

1 голос
/ 18 мая 2009

+ 1 за Qt. Я бы поставил документацию в начало списка требований к системе с графическим интерфейсом. У Qt есть отличные документы, и за этим стоит огромное сообщество. Также есть несколько книг об этом. Хорошие документы чрезвычайно важны, если вы работаете в одиночку без других членов команды, на которых можно положиться. Альтернативами являются wxWidgets, MFC, WTL, FLTK и многие другие. У всех есть свои плюсы и минусы. Например, FLTK невелик и предоставляет только GUI, тогда как Qt и wxWidgets также включают в себя сетевые возможности, доступ к базам данных и т. Д. Qt, похоже, набирает наибольшую популярность в настоящий момент после выкупа Nokia, например, выпуск Qt Creator, который позволяет вам разрабатывать приложения вне Visual Studio. ,

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