我在单文档视图里创建了个列表,双击可以编辑我的想法是编辑完一行的所有单元格后,调用一个函数来保存输入的值(在EndLable得到数据,发消息,再调用函数)
可是现在发现在原先有数据的区域,随便编辑下就会调用那个函数了即使在空白区域添加,也会错误的传值进去,请教各位啊void CComboListCtrl::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
SetItemText(pDispInfo->item.iItem, pDispInfo->item.iSubItem, pDispInfo->item.pszText); GetParent()->SendMessage(WM_VALIDATE,ID_LIST, (LPARAM)pDispInfo);
*pResult = 0;
}
LRESULT CVariab::OnEndLabelEditVariableCriteria(WPARAM wParam, LPARAM lParam)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)lParam;
CString str1;
CString str2;
CString str3;
CString str4;
// TODO: Add your control notification handler code here
if (wParam == ID_LIST)
{
UpdateData(FALSE);
//int n=m_List.GetItemCount();
//str1=m_List.GetItemText(n,0);
//str2=m_List.GetItemText(n,1);
//str3=m_List.GetItemText(n,2); // Update the item text with the new text
//CString strUpdatedTxt = pDispInfo->item.pszText;
switch(pDispInfo->item.iSubItem)
{
case 0:
str1=pDispInfo->item.pszText;
case 1:
str2=pDispInfo->item.pszText;
case 2:
str3=pDispInfo->item.pszText;
case 3:
str4=pDispInfo->item.pszText;
//break;
default:
break;
}
}
EnumValue(str3);
//int a;
//_stscanf(str3,_T("%d"),&a);
if ((str1&&str2&&str3&&str4)&&str1!="输入数据")
{
AddVar(str1,str2,str4,VarTypeImport);
}
m_List.SetReadOnlyColumns(0);
return 1;
}
可是现在发现在原先有数据的区域,随便编辑下就会调用那个函数了即使在空白区域添加,也会错误的传值进去,请教各位啊void CComboListCtrl::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
SetItemText(pDispInfo->item.iItem, pDispInfo->item.iSubItem, pDispInfo->item.pszText); GetParent()->SendMessage(WM_VALIDATE,ID_LIST, (LPARAM)pDispInfo);
*pResult = 0;
}
LRESULT CVariab::OnEndLabelEditVariableCriteria(WPARAM wParam, LPARAM lParam)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)lParam;
CString str1;
CString str2;
CString str3;
CString str4;
// TODO: Add your control notification handler code here
if (wParam == ID_LIST)
{
UpdateData(FALSE);
//int n=m_List.GetItemCount();
//str1=m_List.GetItemText(n,0);
//str2=m_List.GetItemText(n,1);
//str3=m_List.GetItemText(n,2); // Update the item text with the new text
//CString strUpdatedTxt = pDispInfo->item.pszText;
switch(pDispInfo->item.iSubItem)
{
case 0:
str1=pDispInfo->item.pszText;
case 1:
str2=pDispInfo->item.pszText;
case 2:
str3=pDispInfo->item.pszText;
case 3:
str4=pDispInfo->item.pszText;
//break;
default:
break;
}
}
EnumValue(str3);
//int a;
//_stscanf(str3,_T("%d"),&a);
if ((str1&&str2&&str3&&str4)&&str1!="输入数据")
{
AddVar(str1,str2,str4,VarTypeImport);
}
m_List.SetReadOnlyColumns(0);
return 1;
}
解决方案 »
- 求购基于H.264标准的4路视频播放源码,VC6,最好带说明文档,谢谢哈!
- (转)libnet库编译成功
- 纯纯的基础问题.555555
- 在基于ListView视图中将某一行或某一列设置颜色!
- 大家看看我这么调用非模态矿对吗?
- 散分!!!!不做asp了,重新回到vc!!!开心!!!还有提建议!!!
- vc++6.0安装ddk7.1的问题
- 当用平常的方法进不来csdn时,用这种进入csdn的方法。。
- 自定义的消息为何在Release版中不能运行,但在Debug中却正常?
- 程序跟换计算机后重连SQL Sever数据库
- ???请教一个《VC技术内幕》数据库这一章的一个例子 弄了半天了
- ???IStream 内存泄漏???
比如函数的返回值什么的,EndEdit等函数的用法。
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here if (pDispInfo->item.pszText != NULL)
{
SetItemText(pDispInfo->item.iItem, pDispInfo->item.iSubItem, pDispInfo->item.pszText);
GetParent()->SendMessage(WM_VALIDATE,ID_LIST, (LPARAM)pDispInfo);
}*pResult = 0;
}
这样可以吗?原先的单元格里可也是有数据的啊
还有判断为空与否是用.ISEMPTY()的吧
可以。pDispInfo->item.pszText的类型是LPSTR,不是CString,没有IsEmpty()方法。