MFC обрабатывает сообщения с помощью карты сообщений. Карта сообщений есть у любого класса, который может обрабатывать сообщения. А обрабатывать сообщения могут только классы порожденные от CCmdTarget. Карта сообщений состоит из двух частей. Первая определяется в заголовке класса.
class CTestListDlg : public CDialog { ...... DECLARE_MESSAGE_MAP() };
И описывается в файле реализации:
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP()
Начинается карта сообщений с макроса BEGIN_MESSAGE_MAP, у которого указывается два параметра: имя класса и имя класса родителя. Заканчивается карта сообщений макросом END_MESSAGE_MAP().
В основных случаях карту сообщений формирует Class Wizard на вкладке Message Map.
Внутри карты сообщений используются следующие макросы, но это далеко не полный список.