Прямо сейчас мой код не обнаруживает щелчок правой кнопкой мыши по диалогу. Я что-то пропустил? Кроме того, есть ли что-то важное, что я должен знать о том, как работает обнаружение в mfc?
Внутри моего файла.h этот метод используется как общедоступный:
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
В моем файле.cpp у меня есть эти ребята:
void CGadgetAddedDialog::OnRButtonDown(UINT nFlags, CPoint point)
{
char debugStr[1000];
sprintf_s(debugStr, "pressed on: %d, %d", point.x, point.y);
OutputDebugStringA(debugStr);
// TODO: Add your message handler code here and/or call default
CDialogEx::OnRButtonDown(nFlags, point);
}
BEGIN_MESSAGE_MAP(CGadgetAddedDialog, CDialogEx)
ON_WM_ERASEBKGND()
ON_WM_RBUTTONDOWN()
ON_WM_CONTEXTMENU()
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
Если вы нажмете на дочерний элемент управления правой клавишей мыши, дочерний элемент управления получит сообщение.
Если вы хотите обработать правый щелчок мышью для контекстного меню, просто используйте обработчик для WM_CONTEXTMENU. Это гарантирует, что клавиша контекстного меню будет исправлена. Также это сообщение переносится из дочернего элемента в родительский, если он его не обрабатывает.