在MFC

时间:2016-10-23 11:01:08

标签: c++ user-interface mfc

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

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

请建议如何在多项选择中禁用该按钮

1 个答案:

答案 0 :(得分:2)

只需使用:CListCtrl::GetSelectedCount()即可检索列表视图控件中所选项目的数量。

所以你的实现将如下所示:

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建议如果将所有与视图相关的代码移到包含OnUpdateUI处理程序的视图类中,它会更加清晰。