Где лучше всего начать программировать графические интерфейсы для Windows?[закрыто]

StackOverflow https://stackoverflow.com/questions/4347

  •  08-06-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

В заключение...

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

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

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

Другие советы

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

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

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

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

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

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

Я бы также рекомендовал приобрести Борланд Win32 SDK документация в формате файла WinHelp:

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

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

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

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

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

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

В качестве простой отправной точки, чтобы разобраться в «управляемой событиями» природе, в основном все фреймворки созданы вокруг, посмотрите ФЛТК.

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top