Как мне исправить мой OnRButtonDown (), чтобы обнаружить щелчок правой кнопкой мыши для моего диалога? (используя MFC)

0

Прямо сейчас мой код не обнаруживает щелчок правой кнопкой мыши по диалогу. Я что-то пропустил? Кроме того, есть ли что-то важное, что я должен знать о том, как работает обнаружение в 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()
  • 1
    Вы пытались использовать Spy ++, чтобы увидеть, кто обрабатывает сообщение? Это вероятно съедено OnContextMenu.
  • 0
    О, спасибо, я посмотрю на это!
Теги:
mfc

1 ответ

0

Если вы нажмете на дочерний элемент управления правой клавишей мыши, дочерний элемент управления получит сообщение.

Если вы хотите обработать правый щелчок мышью для контекстного меню, просто используйте обработчик для WM_CONTEXTMENU. Это гарантирует, что клавиша контекстного меню будет исправлена. Также это сообщение переносится из дочернего элемента в родительский, если он его не обрабатывает.

  • 0
    Другими словами: ввод мыши всегда идет в окно, находящееся непосредственно под указателем мыши. Если окно отключено, ввод с помощью мыши переходит к родителю этого окна.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню