|
e.添加成员变量 及并在构造函数中初始化 CFont* m_pFont; //用于创建选择字体
BOOL m_bOverImage;
BOOL m_bOverVedio;
BOOL m_bOverMobile;
DEQUELVITEM m_DequeList; //用户信息链表
HICON m_hTailIconA; //vido flag
HICON m_hTailIconB; //mobil message flag
HICON m_hTailIconC;
HBITMAP m_hBackBitmap; //背景
f.添加部分成员函数
重载InsertItem函数,用于增加Item同时增加用户信息。 InsertItem(int nItem, LPCTSTR szItemText, int nImageIndex, LUSERITEM* UserInfo)
{
DEQUELVITEM* pDeqListItem = &m_DequeList;
if(UserInfo)
pDeqListItem ->push_back(*UserInfo);
nItem = CListCtrl::InsertItem(nItem,szItemText,nImageIndex);
return nItem;
}
添加设置显示图标函数,A指定视频标志图标,B指定为短消息标志图标,C未定义 void CMyListCtrl::SetTailIcon(LPCTSTR strIconFileA,LPCTSTR strIconFileB,LPCTSTR strIconFileC)
{
HICON hIcon=NULL;
hIcon = (HICON)::LoadImage(NULL, strIconFileA, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE);
if(hIcon)
{
if(m_hTailIconA)
DeleteObject(m_hTailIconA);
m_hTailIconA = hIcon;
}
hIcon = (HICON)::LoadImage(NULL, strIconFileB, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE);
if(hIcon)
{
if(m_hTailIconB)
DeleteObject(m_hTailIconB);
m_hTailIconB = hIcon;
}
hIcon = (HICON)::LoadImage(NULL, strIconFileC, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE);
if(hIcon)
{
if(m_hTailIconC)
DeleteObject(m_hTailIconC);
m_hTailIconC = hIcon;
}
}
添加设背景位图函数SetBackBitmap void CMyListCtrl::SetBackBitmap(LPCTSTR lpszResourceName)
{
HBITMAP hBmp = (HBITMAP)::LoadImageFile(lpszResourceName);
if(hBmp)
m_hBackBitmap = hBmp;
}
添加删除用户信息函数 BOOL DeleteUserInfo(CString szText)
{
BOOL bRet = FALSE;
LUSERITEM itemInfo;
DEQUELVITEM* pDeqItem = &m_DequeList;
int nItemCount = -1;
DEQUELVITEM::iterator it,itbegin = pDeqItem->begin(),itend = pDeqItem->end();
for ( it = itbegin; it != itend; it++ )
{
nItemCount++;
if(( it->szUserID == szText)||(it->szUserName == szText))
{
if ( nItemCount == ( pDeqItem->size() - 1 ) )
{
//如果是最后一个
pDeqItem->pop_back();
}
else if ( nItemCount == 0 )
//如果是第一个
pDeqItem->pop_front();
else
pDeqItem->erase( pDeqItem->begin() + nItemCount );
bRet = TRUE;
}
}
return bRet;
}
三、自绘代码全部在OnPaint()中实现 ,为了节省篇幅这里省略,请参考源码。
|