不允许在列表控制项mfc上进行右键单击选择?

Siv*_*iva 1 mfc visual-c++

当我尝试使用右键单击选择项目时,我希望不允许选择列表控件项目,如果左键单击该项目,则应显示选择.

我尝试在NM_RCLICK事件中处理它以防止右键单击选择如下:

 void CTestDlg::OnNMRClickList1(NMHDR *pNMHDR, LRESULT *pResult)
        {
        LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);

        if((pNMItemActivate->uChanged & LVIF_STATE) && 
           (pNMItemActivate->uNewState & LVNI_SELECTED))
        {
            *pResult = 1;
        }
        else
        {
            *pResult = 0;
        }
      }
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅屏幕截图

在此输入图像描述

如果我右键单击该项目,则不应该出现蓝色突出显示,因为该突出显示应该仅用于左键单击.

但如果是右键,我仍然可以选择该项目.

有谁可以帮我解决这个问题.

Vla*_*ein 5

您正在处理右键单击事件的通知 ; 在此时阻止任何事情为时已晚,因为选择已更改且之前的选择已丢失.

您应该处理WM_RBUTTONDOWN/UP消息并在那里执行任何操作,而不将其传递给默认窗口过程.