各位高人:
我用CTreeView类定义了一个类似于windows 资源管理器的视图;我要实现对该CXXXTreeView每个节点进行鼠标右键的相关操作(如复制、删除、重命名);现在功能基本实现了:如下:
我的主要代码是这样的:定一个以CXXXTreeView类的对象:m_pTreeView;
右键弹出菜单的 重命名 对应的处理函数中:
HTREEITEM hSelectedNode;
hSelectedNode = m_pCtrl->GetSelectedItem();
m_pTreeView->EditLabel(hSelectedNode);
另外添加两个消息:OnBeginlabeledit(...) OnEndlabeledit(...)
分别用来设置数据的长度和保存节点数据。但是,重命名 异常操作时(先按F2键,使光标处于重新编辑状态时,按鼠标右键,)系统出现了一个异常:Debug Assertion Failed! ....同时有三个按钮: 终止、重试、忽略
我按重试 或则忽略,系统还可以运行!在次 跟踪进去后,发现:在函数OnEndlabeledit 后出现了该异常!请问如何解决这个bug???另外,如何屏蔽F2快捷键的功能?
我用CTreeView类定义了一个类似于windows 资源管理器的视图;我要实现对该CXXXTreeView每个节点进行鼠标右键的相关操作(如复制、删除、重命名);现在功能基本实现了:如下:
我的主要代码是这样的:定一个以CXXXTreeView类的对象:m_pTreeView;
右键弹出菜单的 重命名 对应的处理函数中:
HTREEITEM hSelectedNode;
hSelectedNode = m_pCtrl->GetSelectedItem();
m_pTreeView->EditLabel(hSelectedNode);
另外添加两个消息:OnBeginlabeledit(...) OnEndlabeledit(...)
分别用来设置数据的长度和保存节点数据。但是,重命名 异常操作时(先按F2键,使光标处于重新编辑状态时,按鼠标右键,)系统出现了一个异常:Debug Assertion Failed! ....同时有三个按钮: 终止、重试、忽略
我按重试 或则忽略,系统还可以运行!在次 跟踪进去后,发现:在函数OnEndlabeledit 后出现了该异常!请问如何解决这个bug???另外,如何屏蔽F2快捷键的功能?
我试了,好象不行啊!!!请高人出出主意嘛!
WM_SYSXXXXXX,比如WM_SYSCHAR, WM_SYSKEYDOWN, WM_SYSCOMMAND等等,你自己试试
使用上边的这个函数可以截获任何键盘输入,他在转发到解释键盘吗和鼠标状态,
然后再加以处理就行了
直接到这个函数中处理就行了
我的处理过程
switch(pMsg->message) {
case WM_KEYDOWN:
if( m_bJidDigit)
{
if(((pMsg->wParam) >= 48 && (pMsg->wParam) <= 57)||((pMsg->wParam) <= 57)||((pMsg->wParam) >= 96 && (pMsg->wParam) <= 105))
return FALSE;
else
return TRUE;
}
if(pMsg->wParam == VK_RETURN)
{
Login();
return TRUE;
}
break;
}
[email protected]