отладка — Visual C ++ Learning MFC

В настоящее время я нахожусь в процессе изучения MFC, прежде всего, кто-нибудь из вас знает сайт, где объясняется, где объясняется каждое отдельное событие, например, Когда вы нажимаете «Создать» на ленте, это событие запускается там.

И на самом деле это мой вопрос, когда вы щелкаете файл на ленте, а затем нажимаете новый (из шаблона mfc), где он выполняется, потому что я не могу его найти?

Благодарю вас

0

Решение

Я рекомендую книгу Скотта Уинго MFC Internals. В книге описан механизм маршрутизации сообщений MFC. Он может быть немного устаревшим, но он показывает, куда идти, просматривая исходные файлы MFC, которые поставляются вместе с компилятором. В двух словах,

1) Нажатие кнопки «Файл-Новый» приводит к публикации сообщения в вашем приложении.
2) В конце концов AfxInternalPumpMessage () вызывает GetMessage (), вызывает AfxInternalPreTranslateMessage () и, возможно, TranslateMessage () и DispatchMessage ()
3) В конце концов сообщение попадает в AfxWindowProc (), AfxCallWindowProc () и виртуальный WindowPrc () вашего производного окна CFrame (при условии, что лента, панель инструментов или команда, сгенерированная меню).
4) В конце концов, окно proc выясняет, что это сообщение WM_COMMAND и вызывает OnCmdMsg ().
5) Командная маршрутизация MFC позволяет представлению, документу, окну фрейма и приложению иметь трещину при обработке сообщения.

Чтобы обработать сообщение, производный объект CCmdTarget (CView, CDocument, CFrameWnd, CWinApp) должен иметь карты сообщений BEGIN_MESSAGE_MAP (имя-класса) / END_MESSAGE_MAP () с записью ON_COMMAND (ID_FILE_NEW, CommandHandlerFunc, как аргумент), а также CommandHandlerFunc) функция в производном классе, которая является пустым типом возврата с пустыми аргументами.

BEGIN_MESSAGE_MAP(CMyApp)
ON_COMMAND(ID_FILE_NEW, OnFileNew)
END_MESSAGE_MAP()
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]