Подтвердить что ты не робот

Предпосылки для обучения программированию MFC

Я знаю немного С++ и C, и проект, с которым я сейчас работаю, - это много программирования MFC. Может кто-то опытный рассказать мне о предпосылках для обучения MFC.

Кроме того, из каких источников лучше всего учиться?

Любая конкретная книга или сериал?

Я знаю, что вопрос слишком общий, но ответы могут помочь мне (или кому-либо еще, кто копает в MFC) много.

Спасибо!

4b9b3361

Ответ 1

+1 Хороший вопрос!

tl; dr: учите Win32 - в таком порядке.

Безусловно, наиболее важной предпосылкой для MFC является четкое понимание API Windows (иногда его также называют Win32 API). Вам также нужно будет ознакомиться с несколькими ключевыми понятиями C++ и ознакомиться с инструментами. Мой предложенный список предпосылок будет:

  1. Получить прочную основу в разработке Windows API.
  2. Ознакомьтесь с соответствующими понятиями C++.
  3. Изучите инструменты.

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

1. Windows API:

Windows API предоставляет все сервисы через интерфейс C. Как следствие, управление ресурсами часто является утомительным кодом котельной плиты. И видно в исходном коде (иногда невероятный бонус при чтении кода). MFC - в значительной степени - оболочка автоматического управления ресурсами (и служебная библиотека) вокруг Windows API, скрывающая большую часть управления ресурсами и преобразования типов. Чтобы свободно владеть MFC, вы должны понимать, что он скрывает.

Чтобы начать работу с Windows API и все, что вам нужно, это краткое изложение основных компонентов, я бы порекомендовал Forger Win32 API Tutorial (подделка из #winprog fame). Он охватывает обработку сообщений, управление окнами, элементы управления и GDI и создает прочную основу. Если вам хочется потратить (хорошо потраченное) время на изучение Windows API более подробно, лучшим ресурсом на сегодняшний день, вероятно, все еще остается Чарльз Петцольд, программирующий Windows (не путайте с управляемым Петцольдом). MSDN также является хорошим ресурсом для получения как обзора, так и подробной документации для конкретных областей, таких как:

2. Ключевые понятия C++:

MFC реализован в терминах C++. Несмотря на то, что он предшествует официальному стандарту C++, вы не найдете здесь слишком много интересного. Очень маленький шаблонный код и, конечно, ни одна из новых функций C+ +1 1. Близость с базовыми концепциями C++ поможет вам пройти долгий путь.

Как упоминалось ранее, MFC в значительной степени является оболочкой управления ресурсами вокруг Windows API. Часто существует прямое сопоставление между ресурсами Windows API и объектами MFC (такими как HWND: CWnd или HDC: CDC). Если вы понимаете конструкторы, деструкторы и время жизни объектов, вы в значительной степени настроены в этом отделе.

При использовании контейнеров на основе шаблонов MFC (таких как CMap) вы, естественно, будете работать с шаблонами. Ничего особенного, только базовая параметризация типов для повторного использования кода контейнера и обеспечения безопасного доступа к элементам. Введение в контейнеры MFC можно найти здесь: Коллекции.

Исключения редко используются в MFC, в основном при доступе к файлам или при сериализации данных. Вы все еще должны знать, как написать безопасный код исключения; вы увидите исключения в нетривиальных приложениях. Обзор можно найти в разделе Обработка исключений в MFC.

Препроцессором является область, которая на самом деле не является частью C++, но широко используется в MFC. Независимо от того, насколько тривиально ваше приложение MFC, будут макросы. У вас должно быть очень хорошее понимание как синтаксиса препроцессора, так и того, как работает препроцессор.

3. Инструменты:

Хотя можно писать приложения MFC только с помощью Блокнота, это, конечно, не очень эффективно. Простой текстовый редактор может быть хорошей идеей для изучения платформы, но когда придет время встретить вехи и сроки, вам наверняка захочется использовать мощную IDE.

MFC в значительной степени подразумевает использование Visual Studio, и я предполагаю, что вы используете. Если вы используете VS6 или VS2010 (или более позднюю версию), у вас будет доступ к мастеру классов MFC. Это инструмент, который вы будете часто использовать. Чтобы безопасно управлять им, вы должны ознакомиться с кодом, который он генерирует для вас. Поиграйте с ним, осмотрите сгенерированный код и попытайтесь построить его мысленную модель. Если это пока не имеет смысла, вы должны вернуться позже.

Мастер классов MFC почти наверняка сгенерирует код препроцессора. Он скрывает огромную сложность, которую вы должны понимать, чтобы безопасно использовать. Используйте IDE для навигации по макросам препроцессора, попробуйте расширить их в своем уме и посмотреть, понимаете ли вы полученный код. Если у вас возникают трудности с удалением вызовов макросов, попросите компилятор вывести предварительно обработанный код, используя опцию компилятора /P (Preprocess to a File).

Иногда вам приходится искать или отлаживать исходный код MFC. Чтобы сделать исходный код доступным для просмотра исходного кода и отладчика, необходимо настроить каталоги V C++, включив в них следующее (если его еще нет):

$(VCInstallDir)atlmfc\src\mfc
$(VCInstallDir)atlmfc\src\mfcm
$(VCInstallDir)atlmfc\src\atl

В зависимости от среды IDE это можно сделать через Сервис → Параметры: Проекты и решения → V C++ Каталоги или через страницу свойств настроек вашего проекта.

Поиск помощи: хотя MSDN является лучшим ресурсом для документации, раздел MFC кажется, что он находится в режиме обслуживания и не получает такого внимания, как документация по Windows API. Если вам не хватает документации по MFC, посмотрите соответствующую документацию по Windows API, например, CWnd::OnNcDestroy или WM_NCDESTROY. Последний содержит ценную информацию о порядке, в котором окна получают это сообщение.

Обучение МФЦ

Комплексным ресурсом для изучения MFC является Jeff Prosise ' Программирование Windows с помощью MFC. Хотя он датирован (выпущен в 1999 году), концепции все еще актуальны и сегодня. Он предоставляет обзор концепций MFC и углубляется в детали реализации. Если вы столкнулись с проблемой сгенерированного (препроцессорного) кода, эта книга для вас.

Являясь ценным онлайн-ресурсом, MSDN предлагает информацию практически по любому аспекту развития MFC. Основные понятия включают в себя:

Полный список можно найти на Концепции.

Ответ 2

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

Моя любимая книга MFC - Inside Visual С++ Дэвида Круглинского, который умер слишком рано. Его последнее издание охватывает MFC с Visual Studio 6, но концепции и большая часть контента по-прежнему актуальны.

Чтобы увидеть, как работает Windows, "Петцольд" - это книга. (Программирование на Windows Чарльзом Петцольдом).