如何在MFC中的CListCtrl
中的多个项目选项上禁用工具栏按钮。当前实现是如果没有元素那么按钮被禁用。现在,如果选择了多个项目,则需要扩展功能,然后需要禁用该按钮。
Void CMainFrame::OnUpdate( CCmdUI* pCmdUI)
{
if(I_count==0)//if no items are present
{
pCmdUI->Enable(false);
return;
}
}
请建议如何在多项选择中禁用该按钮
答案 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
处理程序的视图类中,它会更加清晰。