void CAutoBJDlg::OnResult(const char *msgid, const char *user, unsigned int result)
{
char* pMsgId = new char[20];
memset(pMsgId,0,20);
//pMsgId = (char*)msgid; //注意,不能这样赋值,这样只是把地址传给了pMsgId
strcpy(pMsgId,msgid);
m_list.SetItemData(0,(DWORD)pMsgId);
}
void CAutoBJDlg::OnReport(const char *msgid, const char *user, unsigned int result, const char *err)
{
for (int i=0;i<m_list.GetItemCount();i++)
{
char* pID = (char *)m_list.GetItemData(i);
if (strcmp(pID,msgid) == 0) //如果msg的id相同
{
// delete [] pID;
// pID = NULL;
m_list.SetItemText(i,4,"发送成功");
}
}
}
可以看上面的例子。上面的函数是给这一栏加入了一个额外的字符串,来标记一下。下一个函数是对所有的栏进行检验。
上述其实是有bug的,如果没有给每一栏分配一个指针,那么下面的函数就好出现越界错误。