Где это хорошее место для начала программирования графического интерфейса для Windows?

голоса
23

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

Задан 07/08/2008 в 04:06
источник пользователем
На других языках...                            


9 ответов

голоса
44

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

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

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

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

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

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

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

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

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

Другими словами, Silverlight. Если вы не хотите идти маршрут MS вы можете дать компании Adobe Flash / Flex просмотровые видеть. Как Silverlight и Flash / Flex построить RIA-х. Что я думаю, куда мы идем. Они дни офиса, как приложения нумеруются

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

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

Ответил 07/08/2008 в 12:24
источник пользователем

голоса
6

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

Ответил 07/08/2008 в 04:08
источник пользователем

голоса
4

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

Ответил 07/08/2008 в 04:47
источник пользователем

голоса
3

Есть много онлайновых обучающих программ 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.

Ответил 28/10/2008 в 00:20
источник пользователем

голоса
1

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

Ответил 18/09/2008 в 11:13
источник пользователем

голоса
0

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

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

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

Ответил 29/10/2011 в 09:56
источник пользователем

голоса
0

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

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

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

Ответил 12/08/2008 в 14:59
источник пользователем

голоса
0

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

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

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

Ответил 12/08/2008 в 14:26
источник пользователем

голоса
0

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

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

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

Ответил 12/08/2008 в 13:23
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more