CString cStr;
cStr.Format("%I64d", dw);
AfxMessageBox(cStr);
这是显示结果
cStr.Format("%I64d", dw);
AfxMessageBox(cStr);
这是显示结果
解决方案 »
- 一个登陆界面的设计问题,急助!
- 向百度等网页发请求,recv返回值总是0 ,也就是连接被中断了,为什么呢
- 想学习VC网络方面的,希望给点建议。
- 求 CSDN上的 大量VC++通信开发实例,全部源码
- 菜鸟提问:关于二维数组定义的最基本问题。
- 请问各位高手哪里能下到能够提取图像特征的源码?
- OLE调用EXCEL的应用程序关闭后,我的EXCEL和应用程序本身都退不出去
- 不可能的任务!!
- 求救,求救,我的ie主页被人改了,工具栏下的internet选项不能修改,这可如何办呀??
- 关于ScrollView的一点问题?
- vs2010下使用CSerialPort编写串口通信,如何触发消息啊?
- vc6 access数据库 中文模糊查询错误
超过DWORD
CTreeCtrl::SetItemData
BOOL SetItemData( HTREEITEM hItem, DWORD dwData );
所以:
SetItemData(hItem, (DWORD)(&str);
m_Tree1.SetItemData(hSubItem[0], (DWORD)(&str));试了下,结果还是不对
CString h;
a=m_Tree1.GetItemData(hTreeCurrent);
h.Format(_T("%d"),a);
MessageBox(h);
Get出来, 还是那个str 的地址.
没必要再转换
CString *h=(CString *)m_Tree1.GetItemData(hTreeCurrent);
CString h;
h.Format("%ld",s);
MessageBox(h);怪了,显示的值还是和原来一样。
h.Format("%ld",s);
MessageBox(h);
都不要的.CString *s=(CString *)m_Tree1.GetItemData(hTreeCurrent);
MessageBox(*s);
必须是全局变量,不能在函数里(局部变量). 因为 .SetItemData(hSubItem[0], (DWORD)(&str));
后还要用的, 不能 释放掉.
while( !m_pRs.IsEOF() )
{
CString str;
int Rst[6];
HTREEITEM hSubItem[6];//
m_pRs.GetFieldValue(0,Rst[0]);
m_pRs.GetFieldValue(1,Rst[1]);
m_pRs.GetFieldValue(2,Rst[2]);
m_pRs.GetFieldValue(3,Rst[3]);
m_pRs.GetFieldValue(4,Rst[4]);
m_pRs.GetFieldValue(7,Rst[5]);
m_pRs.GetFieldValue(_T("ID"),strID);//
m_pRs.GetFieldValue(_T("sjxh"),strsjxh);//
m_pRs.GetFieldValue(_T("zjh"),strzjh);//
m_pRs.GetFieldValue(_T("zjbt"),strzjbt);
m_pRs.GetFieldValue(_T("debh"),strdebh);//
m_pRs.GetFieldValue(_T("fbcch"),strfbcch);
str=_T("");
str=strzjh;
hSubItem[1]=m_Tree1.InsertItem( strzjbt,hSubItem[0] )
m_Tree1.SetItemData(hSubItem[1],(DWORD)(&strhh));
}
m_pRs.MoveNext();str实际上是从数据库里取出的一连串的数据:如
CString str= 200101010200N1
CString str= 200101010300N2
CString str= 2001010104200N3
CString str= 200101010500N4
CString str= 200101010600N5
CString str= 200101010700N6
CString str= 200101010800N7
CString str= 200101010900N8
CString str= 200101020200N9
1. strhh 必须是全局变量.(可以放类中: m_Strhh)
2. 全局变量可以根据要求动态赋值
CString *s=(CString *)m_Tree1.GetItemData(hTreeCurrent);
MessageBox(*s);
CStringArray m_arString;
..
m_arString[]=
m_arString.SetSize(m_pRs.GetRecordCount());
m_arString.Add(str);
hSubItem[0]=m_Tree1.InsertItem( strzjbt, hParent );
m_Tree1.SetItemData(hSubItem[0], (DWORD)(&m_arString));
用数组方法数据都存进去了,取出不会取。
CString *s=(CString *)m_Tree1.GetItemData(hTreeCurrent);是取出所有的值
你把整个array都放每个item了.应该是每个item放一个str (即array中的第ID项)这里有个问题是hItem 与ID 转换问题,也就是每个hItem 要对应一个ID,以便
从hItem可以得到ID ,进而:m_arString[ID]
把所有 hItem 存起来.
我这个数据都是从数据库里调出,编号长度超过了12位,我要用这个编号去调别的表里的对应数据。取序号就调不了。
他说的方法是正确的,用map之类的。
std::map<DWORD, std::string>
你存储进map使用ListView的Count值作为DWORD,到时候再取序号里的值就可以了
增加:
int i;
i=0;
while( !m_pRs.IsEOF() )
{
m_arString.SetAt(i,str);
hSubItem[0]=m_Tree1.InsertItem( strzjbt, hParent );//
m_Tree1.SetItemData(hSubItem[0], (DWORD)(&m_arString[i]));i+=1;
m_pRs.MoveNext();
}
m_pRs.Close();
取出:
CString *h=(CString *)m_Tree1.GetItemData(hTreeCurrent);
请问:m_arString需要释放?在何处释放?
所以CStringArray析构购函数会自己释放,你不必释放
那就取前 len-2 个字符咯就可以字符串200101010200N1得到字符串200101010200