Ответ 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 (например, офис) нумеруются вообще.
Надеюсь, это поможет. Удачи:)