代码如下:
BOOL CRNR_v11View::PreTranslateMessage(MSG* pMsg)
{
//AfxMessageBox("截到了delete键");
if (pMsg->wParam == VK_DELETE)
{
HTREEITEM hSel=m_TreeCtrl.GetSelectedItem();//取得选项句柄;
if(hSel==NULL)
return true;//无任何选项则返回 if(m_TreeCtrl.ItemHasChildren(hSel))//判断是否有子项
if(MessageBox("该索引项下有多条记录,一同删除?","警告",MB_YESNO)==IDNO)
return true; m_TreeCtrl.DeleteItem(hSel); bModifyFlag = true; return TRUE;
} return CFormView::PreTranslateMessage(pMsg);
}响应delete按键,删除CTree控件上的指定项~现在的问题是:直接运行总是会连着删除两次,可设置断点和单步执行的时候均是正确的,看不出来有执行两次删除的迹象。研究了一上午了,未果。有看到类似的问题,但好像这种都跟代码紧密相关,希望有经验的高手帮我看看,多谢啦~~
BOOL CRNR_v11View::PreTranslateMessage(MSG* pMsg)
{
//AfxMessageBox("截到了delete键");
if (pMsg->wParam == VK_DELETE)
{
HTREEITEM hSel=m_TreeCtrl.GetSelectedItem();//取得选项句柄;
if(hSel==NULL)
return true;//无任何选项则返回 if(m_TreeCtrl.ItemHasChildren(hSel))//判断是否有子项
if(MessageBox("该索引项下有多条记录,一同删除?","警告",MB_YESNO)==IDNO)
return true; m_TreeCtrl.DeleteItem(hSel); bModifyFlag = true; return TRUE;
} return CFormView::PreTranslateMessage(pMsg);
}响应delete按键,删除CTree控件上的指定项~现在的问题是:直接运行总是会连着删除两次,可设置断点和单步执行的时候均是正确的,看不出来有执行两次删除的迹象。研究了一上午了,未果。有看到类似的问题,但好像这种都跟代码紧密相关,希望有经验的高手帮我看看,多谢啦~~
return CFormView::PreTranslateMessage(pMsg); //改成直接返回TRUE试试
afxDump << hSel << "\n";
看到按一次“delete”,进入2次。注意KEYDOWN和KEYUP。