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

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

7.08.2008 03:06:19
9 ОТВЕТОВ
РЕШЕНИЕ

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

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

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

Если вы хотите использовать C ++, у вас есть все опции, которые есть у вас при использовании C, плюс несколько других. Я бы рекомендовал перейти непосредственно к Win32 API, а затем перейти к известной среде, такой как MFC, Qt, wxWindows или GTK, чтобы вы могли тратить меньше времени на работу с шаблонным кодом и вместо этого сосредоточиться на написании логики своего приложения. Последние 3 варианта, которые я только что перечислил, имеют дополнительное преимущество, заключающееся в кроссплатформенности, поэтому вам не нужно слишком беспокоиться о проблемах, связанных с платформой. Учитывая, что вы сказали, что хотите работать с 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. Эта технология достигает совершеннолетия, и есть много замечательных мест, чтобы узнать об этом. Во-первых, есть такие сайты, как LearnWPF и DrWPF.у которых есть действительно отличные статьи. Во- вторых, есть много из хороших книг по теме .

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

В качестве последнего замечания ...

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

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

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

43
7.08.2008 11:24:54
Если вы хотите использовать Win32 API из C ++, есть также WTL. См. Wtl.sourceforge.net
Roger Lipscombe 23.10.2008 07:58:58
+1 для Петцольда и Ритчера.
user1899812 21.05.2013 18:40:49

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

5
7.08.2008 03:08:35

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

3
7.08.2008 03:47:41

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

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

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

0
12.08.2008 12:23:30

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

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

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

0
12.08.2008 13:26:07

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

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

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

0
12.08.2008 13:59:12

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

1
18.09.2008 10:13:59
Закрытая коробка и отдельная компания не проблема вообще. Независимо от того, с какой коробкой вы работаете, вы все равно рискуете никогда не перенести на нее свой код. Неоправданное FUD не является аргументом в пользу отказа от Silverlight или Flash.
OJ. 26.09.2008 09:10:03

Есть много онлайн-уроков по 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.

3
27.10.2008 23:20:25

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

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

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

0
29.10.2011 08:56:23