Имена, используемые MFC
Библиотека классов содержит огромное количество классов, структур, констант и т. д. Чтобы сделать исходный текст приложений MFC более легким для понимания, принято использовать ряд соглашений для используемых имен и комментариев.
Названия всех классов и шаблонов классов библиотеки MFC начинаются с заглавной буквы C. Например, CWnd, CMenu, CArray - это классы. Когда вы наследуете собственные классы от классов MFC, вы можете давать им любые имена. Рекомендуется называть их как и классы MFC с заглавной буквы C. Это сделает исходный текст приложения более ясным для понимания.
Чтобы отличать элементы данных, входящие в класс, от простых переменных, их имена принято начинать с префикса m_. Названия методов классов, как правило специально не выделяются, но их обычно пишут с заглавной буквы.
Библиотека MFC включает помимо классов, набор служебных функций. Названия этих функций начинаются с символов Afx, например AfxGetApp, AfxGetAppName, AfxGetMainWnd. Символы AFX являются сокращением от словосочетания Application FrameworkX, означающего основу приложения, его внутреннее устройство.
Символы AFX встречаются не только в названии функций MFC. Многие константы, макрокоманды и другие символы начинаются с этих символов. В общем случае Afx является признаком, по которому вы можете определить принадлежность того или иного объекта (функции, переменной, ключевого слова или символа) к библиотеке MFC.
В процессе создания приложения MFC AppWizard и ClassWizard могут определять идентификаторы ресурсов, идентификаторы для справочной системы и т. д. При этом, для идентификаторов различного типа используются разные префиксы:
Префикс | Представляет идентификаторы | ||
HID_ | Контекстной подсказки для команд | ||
HIDD_ | Контекстной подсказки для диалоговых панелей | ||
ID_ | Строк меню и кнопок панелей управления | ||
IDB_ | Растровых изображений bitmap | ||
IDC_ | Курсоров | ||
IDC_ | Органов управления диалоговых панелей | ||
IDD_ | Шаблонов диалоговых панелей | ||
IDI_ | Пиктограмм | ||
IDP_ | Строковых ресурсов, используемые в диалоговых панелях message box для отображения приглашения | ||
IDR_ | Приложение может иметь несколько ресурсов различного типа с одинаковыми идентификаторами. Для таких идентификаторов используют префикс IDR_ | ||
IDS_ | Строковых ресурсов | ||
IDOK, IDCANCEL | Стандартные идентификаторы для кнопок OK и Cancel диалоговых панелей |
Когда приложение разрабатывается средствами MFC AppWizard и ClassWizard, они размещают в исходном тексте приложения комментарии следующего вида:
//{{AFX_
...
//}}AFX_
Такие комментарии образуют блок кода программы, который управляется только средствами MFC AppWizard и ClassWizard. Пользователь не должен вручную вносить изменения в этом блоке. Для этого необходимо использовать средства ClassWizard.
Чтобы подчеркнуть особое положение программного кода, заключенного в комментарии //{{AFX_, он отображается серым цветом. Это еще раз напоминает пользователю, о том, что он не должен вручную вносить изменения в этот код. В следующей таблице представлено краткое описание некоторых блоков //{{AFX_.
Блок |
Включает |
//{{AFX_DATA //}}AFX_DATA |
Объявление элементов данных класса. Используется в описании классов диалоговых панелей |
//{{AFX_DATA_INIT //}}AFX_DATA_INIT |
Инициализация элементов данных класса. Используется в файле реализации классов диалоговых панелей |
//{{AFX_DATA_MAP //}}AFX_DATA_MAP |
Макрокоманды DDX, предназначенные для связывания элементов данных класса и органов управления диалоговых панелей. Используется в файле реализации классов диалоговых панелей |
//{{AFX_MSG //}}AFX_MSG |
Описание методов, которые предназначены для обработки сообщений. Этот блок используется при описании класса |
//{{AFX_MSG_MAP //}}AFX_MSG_MAP |
Макрокоманды таблицы сообщений класса. Используются совместно с AFX_MSG |
//{{AFX_VIRTUAL //}}AFX_VIRTUAL |
Описание переопределенных виртуальных методов класса. Блок AFX_VIRTUAL используется при описании класса |
Когда вы будете изучать описание классов приложения, созданных средствами MFC AppWizard и ClassWizard, вы заметите ряд комментариев, разделяющих элементы класса на несколько категорий. Описание этих комментариев мы привели в следующей таблице.
Комментарий |
После комментария размещаются |
// Constructors |
Конструкторы класса и методы, используемые для инициализации объектов класса. Как правило, элементы класса размещенные в этой секции определены с ключевым словом public |
// Attributes |
Элементы данных класса, и методы для доступа к ним (свойства класса). Как правило, элементы класса размещенные в этой секции определены с ключевым словом public |
// Operations |
Виртуальные и не виртуальные методы, используемые для выполнения операций над объектами класса. Как правило элементы класса размещенные в этой секции определены с ключевым словом public |
// Overridables |
Здесь расположены виртуальные методы, которые вы можете переопределить в порожденных классах. Как правило, элементы класса размещенные в этой секции определены с ключевым словом protected. В большинстве случаев, названия виртуальных методов класса начинается с символов On |
// Implementation |
Методы и элементы данных, относящиеся к внутреннему устройству класса - реализации класса. Как правило, элементы класса размещенные в этой секции определены с ключевым словом protected или private |
// Dialog Data |
Элементы данных, класса диалоговой панели, связанные с органами управления |
MFC AppWizard и ClassWizard помогают вам разрабатывать приложение. Они создают все классы и методы, необходимые для его работы. Вам остается дописать к ним свой код. В тех местах, где вы можете вставить этот код, MFC AppWizard и ClassWizard, как правило, помещают комментарий // TODO:.