Итак, я попытался воспроизвести это поведение в простом диалоговом приложении, и я действительно не могу - однако я не уверен, что перехватывает сообщение правой кнопки, которое пытается решить.
При этом следующий код полностью блокирует щелчки левой кнопкой мыши в моем тестировании (Если это возвращает TRUE, элемент управления не реагирует на левые нажатия - однако фокус будет установлен на элемент управления при первоначальном нажатии вниз, и это больше выдача оконного менеджера, чем сам элемент управления)
void CTestDlg::OnMsgfilterRichedit1(NMHDR* pNMHDR, LRESULT* pResult)
{
MSGFILTER *pMsgFilter = reinterpret_cast<MSGFILTER *>(pNMHDR);
if (pMsgFilter->msg == WM_LBUTTONUP || pMsgFilter->msg == WM_LBUTTONDOWN)
{
*pResult = TRUE;
return;
}
*pResult = FALSE;
}
Если я изменю * pResult = TRUE на * pResult = FALSE, то левые щелчки снова начнут работать.
Возможно, вы хотите поймать и отфильтровать WM_RBUTTONDOWN, а не WM_RBUTTONUP, чтобы делать то, что вы намерены, но так как я не уверен, какие функции вы пытаетесь отфильтровать, я не могу сказать точно.