c++ - 在 MFC 的 CListCtrl 中禁用多个项目的按钮

标签 c++ user-interface mfc

如何在 MFC 中的 CListCtrl 中禁用多个项目的工具栏按钮。当前的实现是,如果没有元素存在,那么该按钮将被禁用。现在,如果选择了多个项目,则需要扩展该功能,然后需要禁用该按钮。

Void  CMainFrame::OnUpdate( CCmdUI* pCmdUI) 
 {   
     if(I_count==0)//if no items are present
     {
     pCmdUI->Enable(false);
     return;
     }        
 }

请建议如何禁用多选按钮

最佳答案

只需使用:CListCtrl::GetSelectedCount() 即可检索 ListView 控件中选定项的数量。

所以你的实现看起来像这样:

void  CMainFrame::OnUpdate(CCmdUI* pCmdUI) 
 {   
     CMyListView* pView = (CMyListView*) ((CFrameWnd*) AfxGetMainWnd ())->GetActiveView ();
     int nSel = pView->GetListCtrl().GetSelectedCount();
     if(nSel == 0 || nSel > 1)
         pCmdUI->Enable(FALSE);
     else
         pCmdUI->Enable(TRUE);
 }

当然你应该添加一些错误处理来确保窗口被初始化:

if (pWnd != NULL && pWnd->GetSafeHwnd() != NULL)
{
    // TODO: safe to call HWND methods
} 

如 Constantine Georgiou 所建议的更好的设计,如果将所有与 View 相关的代码移动到 View 类(包括 OnUpdateUI 处理程序),将会更加清晰。

关于c++ - 在 MFC 的 CListCtrl 中禁用多个项目的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40202156/

相关文章:

c++ - 带有用 C 编写的库的智能指针

user-interface - 哪个是黑莓应用程序开发的更好工具?

java - 延迟无法正常工作,而是在长时间延迟后执行所有操作

c++ - dll导入c++/MFC的编译器错误

c++ - 如何在 Windows 7 的 MFC 中区分 "Close All Windows"和 "Close"单个窗口?

c++ - 从 MySQL 选择 LONGTEXT 列时 CRecordset 出现 "out of memory"异常

c++ - 分割大量文本数据的算法

c++ - Aruco 函数 estimatePoseSingleMarkers() 错误

c++ - 更新 mongo 集合

windows - 如何实现全屏模式?