如何防止CListCtrl选择其他行?我作一数据库更新操作,ListCtrl每次作对应移动(选择)就会更新数据库,如果更新失败,不允许他移动,而且要提示错误。这个ListCtrl是单选的。
我尝试过在ItemChanged事件中重新设置选择行,但是错误提示竟然弹出两次。谢谢!下面是我的代码,其中m_nItem是类成员,UpdateElementInfo是数据库操作,如果操作失败,会弹出对话框,但是执行的时候弹出了两次对话框!void CWebMethodDBDlg::OnLvnItemchangedListElement(
NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
*pResult = 0;
if((pNMLV->uNewState & LVIS_SELECTED) &&
!(pNMLV->uOldState&LVIS_SELECTED))
{
int nItem=pNMLV->iItem;
if(nItem==-1||nItem==m_nItem) return;
if(m_nItem!=-1)
{
if(!UpdateElementInfo(m_nItem))
{
m_lstElement.SetItemState(m_nItem,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
return;
}
}
m_nItem=nItem;
LoadElementInfo(nItem);
}
}
我尝试过在ItemChanged事件中重新设置选择行,但是错误提示竟然弹出两次。谢谢!下面是我的代码,其中m_nItem是类成员,UpdateElementInfo是数据库操作,如果操作失败,会弹出对话框,但是执行的时候弹出了两次对话框!void CWebMethodDBDlg::OnLvnItemchangedListElement(
NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
*pResult = 0;
if((pNMLV->uNewState & LVIS_SELECTED) &&
!(pNMLV->uOldState&LVIS_SELECTED))
{
int nItem=pNMLV->iItem;
if(nItem==-1||nItem==m_nItem) return;
if(m_nItem!=-1)
{
if(!UpdateElementInfo(m_nItem))
{
m_lstElement.SetItemState(m_nItem,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
return;
}
}
m_nItem=nItem;
LoadElementInfo(nItem);
}
}
解决方案 »
- 编译的问题 iphlpapi.h 报错
- glWindowPos这个到底怎么使用呢?
- 现在公司一般给不给在校生假期实习的机会
- 线程的问题
- 求购二手书" mfc windows程序设计 ",
- 消息传递方面的问题(大牛小牛都帮忙看看:))
- 公司用vb开发的com,在vc 中怎样使用它,请给出一般过程或书籍介绍!百分感谢!!!
- 关于const类成员函数的问题?
- 高分。。。低能。。。问题~~~
- 请问那里可以下载Visual Studio C++?(100分相送)
- 编译文件出错?fatal error RC1004: unexpected end of file found
- 看完<<深入浅出mfc>>,接下来看那本书比较好.
check select state of item to determin which item is about to be deselected
return i;
//i为选中元素的索引值
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
*pResult = 0;
if((pNMLV->uNewState & LVIS_SELECTED) &&
!(pNMLV->uOldState&LVIS_SELECTED))
{
int nItem=pNMLV->iItem;
if(nItem==-1||nItem==m_nItem) return;
if(m_nItem!=-1)
{
if(!UpdateElementInfo(m_nItem))
{
m_lstElement.SetItemState(m_nItem,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
return;
}
}
m_nItem=nItem;
LoadElementInfo(nItem);
}}