Как начать разработку Windows? - PullRequest
6 голосов
/ 18 сентября 2008

Я был веб-программистом на основе Unix в течение многих лет (Perl и PHP). Я также хорошо разбираюсь в C и C ++ (и в bash, и в подобных вещах типа sysadmin) с точки зрения самого языка. У меня никогда не было проблем с изучением нового языка (я несколько лет назад осматривал Java, и хотя я мог его писать, мне просто не нравился этот язык).

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

У меня есть несколько идей для приложений на базе Windows, через которые я хочу работать. Я мог бы сделать это Perl / TCL / TK, но я хочу что-то более "родное" по разным причинам.

Благодаря моей нынешней компании у меня есть доступ к инструментам Microsoft (и лицензиям на их использование для «разработки»), поэтому я решил научить себя чему-то новому.

Итак, у меня установлена ​​Visual Studio 2008. Я запустил его, щелкнул «Новый проект», а затем был совершенно сбит с толку разнообразием типов новых проектов, которые я мог начать.

Может ли кто-нибудь помочь мне понять не только фундаментальные различия, но и какие-либо советы относительно того, к чему относится каждый тип?

Предполагая, что я иду по маршруту C ++ (я знаю язык, поэтому не выбираю C # - если это на самом деле не рекомендуется), я мог бы использовать:

  • Windows Forms
  • Приложение MFC
  • Win32

Я также знаю, что вне Microsoft я мог бы использовать wxWidgets. wxWidgets мне нравится (кроссплатформенность и т. д.), но как это соотносится с различными вариантами Microsoft выше? Я также знаю, что Qt существует.

Ответы [ 8 ]

4 голосов
/ 18 сентября 2008

Это зависит от того, насколько «близко к металлу» вы хотите быть. Выберите .Net / C # / Windows Forms / WPF, если вы хотите быстро писать приложения только для Windows. Выберите C ++ / MFC, если вы полны решимости изучить платформу, которая не проста в использовании и имеет преимущества от 15-летнего устаревшего кода, но дает вам неограниченный контроль над каждой мелочью (чтобы быть понятным: MFC только для Windows) .

MFC - это оболочка для API C win32, а также некоторые дополнительные возможности, объединяющие стандартную функциональность. Очень помогает знать, как работает Win32 API. Чтобы узнать это, я рекомендую «Программирование Windows» Чарльза Петцольда (так называемые «Petzold» у старых). Вы также можете начать с MFC. Взгляните на множество примеров и учебных пособий, которые включены в Visual Studio, и на такие сайты, как codeproject.com.

.Net / C # намного проще в использовании. Он абстрагирует многие API-интерфейсы Win32, но все еще является оберткой - поэтому для некоторых вещей вам нужно «опустить уровень», как это было в Visual Basic. ИМХО (и, вероятно, для этого я буду модернизирован), C # - это новый Visual Basic, за исключением того, что он не такой уродливый, как язык, и что он статически типизирован. Чтобы быть справедливым, у него также есть некоторые преимущества, например, не требует странного времени выполнения VB (но это требует .Net, так что ...)

0 голосов
/ 19 сентября 2008

ИМХО, wxWidgets лучше, чем любой из них. Например, я знаю многих людей, которые перевели свои проекты из MFC в wx. У wxWidgets есть все, что есть у MFC (в ранних версиях wx многие классы были клонами классов MFC) и многое другое. Это не просто библиотека с графическим интерфейсом, но у вас есть оболочки для всех общих задач, таких как чтение / запись файлов XML, реестр Windows, манипуляции с различными типами графики и данных изображений, классы для преобразования между наборами символов и т. Д. на сайте wxCode множество дополнительных классов, которые могут легко улучшить ваши приложения.

wxWidgets также кроссплатформенный, имеет полную поддержку Unicode и только продвигается дальше. Если вы решите попробовать, обязательно попробуйте wxFormBuilder для простого, WYSIWYG-конструктора пользовательского интерфейса (диалогов, окон, ...).

0 голосов
/ 18 сентября 2008

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

Если вы хотите повысить свою трудоспособность, я бы выбрал C # / ASP.Net. Таким образом, вы изучаете C #, а также узнаете больше о веб-разработчике в целом и ASP.Net в частности. Я думаю, вы обнаружите, что Windows Forms намного проще, сравнительно, и на самом деле не стоит тратить на это много времени.

Так что на вашем месте я бы построил свое приложение так, чтобы большая его часть была отделена от интерфейса. Сначала я узнал, как заставить этот код взаимодействовать в ASP.Net, а затем попробовал бы это в Windows Forms. Если вы сможете это сделать, вы узнаете много действительно важных навыков для разработки .Net Framework.

0 голосов
/ 18 сентября 2008

Если вы просто заинтересованы в написании приложений для графических окон, просто придерживайтесь «Windows Form Application». Он начнет вас с пустой формы Windows и класса, который содержит ваш метод main ().

Проект "Консольное приложение", вероятно, самый простой, он просто создает один файл класса для вас с помощью main () и все.

В проекте "Библиотека классов" есть леса и настройки сборки по умолчанию для создания DLL.

Как правило, между различными типами проектов нет принципиальных отличий. Все, что они делают, - это устанавливают для вас некоторые включения по умолчанию и генерируют некоторый код скаффолдинга (например, пустую форму окна), чтобы начать работу.

Я рекомендую изучать C #. Если вы знаете Java, это не будет для вас слишком большим скачком. Первоначальная версия C # была фактически разработана так, чтобы быть в точности похожей на Java, но с годами они немного разошлись.

0 голосов
/ 18 сентября 2008

Я пытался заниматься программированием на C ++ в .Net (Windows Forms). И хотя это было возможно, это, конечно, не было приятным опытом, в основном потому, что у вас есть несколько дополнительных ключевых слов, которые отличаются от стандартных C ++. Но если вы хотите изучить C ++, это вариант.

Я сам начал работать над проектом с использованием C #, который работает очень хорошо. Это легко понять, если у вас есть опыт работы в C ++.

Я бы не стал больше касаться Win32 API. Это действительно ужасно!

0 голосов
/ 18 сентября 2008

Я бы на самом деле выбрал C # вместо C ++. Для клиентских приложений Windows это невозможно. Для C / C ++ чувак, как вы, кривая изучения синтаксиса будет коротким. Трудность будет заключаться в изучении .NET Framework, но это та цена, которую вам придется понести так или иначе.

После выбора C # просто выберите Windows Forms или приложение WPF. Оба являются типами приложений на стороне клиента. Если вы выберете WPF Application, вам также придется изучить XAML, который является довольно новой, но чрезвычайно мощной концепцией.

0 голосов
/ 18 сентября 2008

Windows Forms - это на сегодняшний день самый красивый из них. Тем не менее, использование форм Windows из C ++ будет еще больше сбивать вас с толку, если вы еще не знаете, что делаете, потому что тогда вы действительно используете C ++ / CLI, который также может быть совершенно другим языком. Лучше пойти по C #, если хочешь идти по этому пути.

MFC, вероятно, ближе всего к тому, с чем вы знакомы. Но, опять же, Windows Forms намного приятнее.

0 голосов
/ 18 сентября 2008

C # - это язык, который я выбрал для разработки Windows. Я пришел из того же рода, что и вы, и нашел C # невероятно освежающим. Я действительно люблю этот язык, и .NET теперь является моей предпочтительной платформой. Кроме того, легко поддерживать связь с вашими корнями Unix с помощью разработки Mono. Действительно .NET - отличная платформа, и вы должны изучить ее.

Кроме того, когда речь идет о Visual Studio, вы должны помнить, что разные проекты в основном только определяют, какие библиотеки включены, по умолчанию и процесс сборки. Если вы хотите использовать Makefile в стиле Unix, вы можете заняться разработкой Windows с Mono.

Alex

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