Где хорошее место для запуска программирования GUI для окон?

У меня есть опыт работы с консолью и сетевыми клиентскими/серверными приложениями на C и С++, но я почти ничего не знаю об использовании визуального API win32, MFC, Qt, wxWidgets и т.д. Где хорошее место для начала и что метод должен я специализироваться, чтобы быть готовым к будущему и надежным?

Ответ 1

Это довольно широкий вопрос, поскольку программирование GUI-приложений в Windows может быть сделано по-разному.

Для разработки любого графического интерфейса есть две основные части: язык и API/framework. Учитывая, что вы заинтересованы в том, чтобы научиться создавать приложения для Windows GUI, этот язык не является для вас точкой внимания. Следовательно, вы должны выбрать язык, который вы уже знаете, и работать с каркасом или API, который может использоваться вашим выбранным языком.

Если вы хотите использовать C, вы в значительной степени ограничены самим интерфейсом Win32 API, и в этом случае читайте Petzold или Richter - отличные места для начала. API Win32 может быть довольно сложным, но он стоит усилий для изучения (imho). В Win32 есть много обучающих программ, и всегда MSDN, с полным справочником/руководством по Win32 API. Убедитесь, что вы используете не только API, но и другие области, такие как ресурсы/диалоги, поскольку они составляют блоки для вашего приложения Win32.

Если вы хотите использовать С++, у вас есть все параметры, которые у вас есть при использовании C плюс несколько других. Я бы рекомендовал напрямую обращаться к API Win32, а затем перейти к известной структуре, такой как MFC, Qt, wxWindows или GTK, чтобы вы могли потратить меньше времени на работу с шаблоном кода и вместо этого сосредоточиться на написании своей логики приложения. Последние 3 варианта, которые я только что перечислил, имеют дополнительное преимущество - быть кросс-платформенным, поэтому вам не нужно слишком беспокоиться о проблемах, связанных с платформой. Учитывая, что вы сказали, что хотите работать с Windows, я предполагаю, что вы хотите сосредоточиться на этом, а не на межплатформенном, - так что пойдите с MFC, но потратьте некоторое время на то, чтобы Win32 API сначала познакомился с некоторыми из концепции.

Когда вы работаете с MFC и Win32 API, рекомендуется попробовать и получить четкое представление о терминологии до написания кода. Например, вам нужно понять, что такое message pump и как он работает. Вам нужно знать о таких понятиях, как " "нарисованные владельцем" элементы управления "и подклассов. Когда вы понимаете эти вещи (и многое другое), вам будет легче работать с MFC, потому что он использует аналогичную терминологию в своих интерфейсах классов (например, вам нужно знать, что означает" переводить сообщения ", прежде чем вы сможете понять, как и когда используйте PreTranslateMessage).

Вы также можете использовать Managed С++ для написания приложений .NET GUI, но я прочитал в нескольких местах, что Managed С++ на самом деле не предназначался для использования таким образом. Вместо этого он должен использоваться как шлюз между собственным/неуправляемым кодом и управляемым кодом. Если вы используете .NET, лучше всего использовать язык .NET, такой как VB.NET или С#, для создания графических интерфейсов.

Итак, если вы собираетесь использовать .NET, у вас есть выбор библиотеки WinForms или WPF. Я лично считаю, что вы будете тратить время на изучение создания приложений WinForms, учитывая, что WPF предназначен для его замены. Со временем WPF станет более предубежденным, и Winforms, скорее всего, отмирают. WPF имеет гораздо более богатый набор API и не страдает от многих ограничений, которые Winforms делает. Однако, если вы выбрали этот маршрут, вам, несомненно, придется изучить XAML, который является языком разметки, который управляет приложениями WPF. Эта технология достигла совершеннолетия, и есть много замечательных мест, чтобы узнать об этом. Во-первых, существуют такие сайты, как LearnWPF и DrWPF, в которых есть действительно интересные статьи. Во-вторых, много качество книги на странице .

Итак, подведем итог, как только вы выбрали свой язык и технологию, путь на самом деле довольно прост. Просто возьмите книгу или две, прочитайте несколько блогов, загляните в некоторые образцы кода... и самое главное... напишите код. Продолжайте писать, продолжайте делать ошибки и продолжайте учиться у них.

В качестве заключительной заметки...

Другими словами, Silverlight. Если вы не хотите идти по маршруту MS, вы можете увидеть, как выглядит Adobe Flash/Flex. И Silverlight, и Flash/Flex строят RIA. Думаю, это то, куда мы идем. Эти дни Office как приложения пронумерованы

Я вообще не согласен. Silverlight - это не то же самое, что WPF. Silverlight является веб-специфическим и имеет только подмножество функций WPF. Учитывая, что вопрос задает приложения для Windows GUI, Flash/Flex Rich Internet Apps на самом деле не подходят. Я также не согласен с тем, что дни Rich Client Applications (например, офис) нумеруются вообще.

Надеюсь, это поможет. Удачи:)

Ответ 2

Я не знаю, назову это хорошим местом, но если вы хотите быть готовым к будущему, посмотрите на окна презентационная основа, которая полностью построена с целью программирования GUI для окон

Ответ 3

Мой первый опыт написания простых графических приложений для Windows был с С# и Visual Studio. Интерфейс GUI-построения - это простая транзакция перетаскивания, которая генерирует методы скелета, основанные на потенциальных действиях пользователя. Я только сделал довольно базовое программирование с этим, но я думаю, что это будет отличное место, чтобы начать изучать основы и перейти к более продвинутым возможностям, когда вы идете.

Ответ 4

Существует множество онлайн-руководств Win32:

http://www.zeusedit.com/forum/viewtopic.php?t=1218

Есть много компиляторов на выбор:

http://www.zeusedit.com/forum/viewtopic.php?t=238

Я также рекомендовал бы получить документацию Borland Win32 SDK в формате файла WinHelp:

http://www.zeusedit.com/forum/viewtopic.php?t=7

Он охватывает только основные основы Win32, но при запуске это может быть полезно, поскольку оно менее сложное и менее раздутое, чем MSDN.

Ответ 5

Я бы никогда не спустил Silverlight, Flash/Flex или какой-либо другой маршрут. Это выглядит хорошо, но главная проблема заключается в том, что код движка, который его запускает, полностью закрыт и управляется одной компанией. Возьмите, например, 64-битные версии обоих из них. Если появится какая-то новая платформа, вы не сможете перенести свой существующий код на нее.

Ответ 6

Для бизнес-приложений Windows Forms очень зрелая. Это обеспечивает легкий путь от автоматического генерации много для вас, чтобы обеспечить мелкозернистый контроль и сворачивать ваши собственные. Есть тонны высококачественных сторонних элементов управления и большое количество примеров, документов и т.д. Трудно столкнуться с проблемой, которую кто-то еще не решил. Я настоятельно рекомендую приобрести некоторые базовые знания Win32 (например, Petzold), поскольку среда WinForms живет поверх нее.

У меня нет опыта WPF, но из примеров приложений, которые я видел, он выглядит как хороший выбор для приложений, интерфейсы которых выиграют от более графических метафор. Поэтому, если вы делаете банковское приложение, возможно, не стоите лишних накладных расходов на дизайн. Но если вы делаете, скажем, приложение для управления хранилищем, его можно улучшить, выбросив красивые коробки в симпатичные бункеры.

@StephenCox: неверный ответ на неправильный вопрос. OP спрашивает о настольных клиентских приложениях и, кроме того, WPF!= Silverlight.

Ответ 7

Для простой отправной точки, чтобы окунуться в "управляемую событиями" природу, в основном все фреймворки создаются вокруг FLTK.

Вот несколько быстрых стартовых видео Ссылка

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

Ответ 8

Поскольку вы уже знакомы с C и С++, я бы посоветовал научиться писать простое приложение для Windows GUI, используя книгу Чарльза Петцольда. Это даст вам фундаментальное представление о том, как работает Windows. Хорошо понимать, что большинство всего, что вы видите, - это окно (например, кнопка - это окно) и что эти окна реагируют на сообщения. Я бы не потратил много времени на это, хотя и вам не обязательно сначала делать это, если вы собираетесь выбирать WPF. Я просто думаю, что хорошо иметь базовое понимание этого.

Недавно был хороший подкаст на .Net Rocks, который называется "Кейт Грегори разрабатывает на С++ для Vista!" там она рекомендует кому-то теперь не следует использовать/изучать MFC (хотя он был недавно обновлен).

Что касается подготовки к будущему, вам нужно изучить WPF, но он еще не завершен, поэтому в зависимости от типов приложений на стороне клиента, которые вы хотите создать, вам, вероятно, потребуется изучить WinForms. Большинство людей еще не используют WPF, поэтому пришло время начать обучение. Я думаю, вам будет проще использовать С#, чтобы изучить его, а не делать управляемый код с С++.

Ответ 9

Сначала получите свои основы. Лучший учебник, который я нашел: http://winprog.org/tutorial/start.html

После этого, хотя домашняя страница ненавистно отвратительна, учебные страницы хороши в содержании и эстетике: http://www.tenouk.com/cplusmfcdotnet.html

Тогда, конечно, MSDN.