该控件的实现参照了:http://www.cppblog.com/getborn/archive/2008/05/27/51268.html,表示感谢!!!
1.添加一个类名命为CFriendList,继承CListCtrl类。
2.给类中添加方法与消息响应,具体见我的资源中“MFC仿QQ好友列表控件”。
3.给对话框添加一个List Control控件,并给对话框类添加其对应变量:如CListCtrl myList;然后引入自己的控件头文件如“FriendList.h”,并将
添加的myList变量改为CFriendList类型。
4.添加的List Control控件需要设置以下属性:(我的vs2010为英文版,不知道对应的中文属性叫什么名称,自己查吧)
Aligenment:Top
Border:True
No Column Header:True
Owner Draw Fixed:True
Single Selection:True
View:Report
//可能一些属性不需要修改,自己研究吧
另外:
1.void CFriendList::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
//LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
// TODO: Add your control notification handler code here
//*pResult = 0;
//NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
// Take the default processing unless we set this to something else below.
//*pResult = CDRF_DODEFAULT;
//设置listctrl的格式,由格子等
//SetExtendedStyle(GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
}
//上述方法,在我的对话框中使用后一直闪烁,绘制不出来图像,后来我取消了实现,在AddNewUser的地方使用myList.SetExtendedStyle
(GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);也实现了格子
void CFriendList::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp)
{
// TODO: Add your message handler code here and/or call default
ModifyStyle(WS_HSCROLL,0,0);//禁止水平滚动条
CListCtrl::OnNcCalcSize(bCalcValidRects, lpncsp);
}
2.代码中的numFlag与m_RoomsNum是为了实现我自己的功能,他人可以去掉,使用的原因是因为我要加载的图像都各不同,而原作者的图像只有固定
的一个。可以对照着我上述提供的网站查看修改,作者使用的是m_bmpUnSel,而我使用了m_bmpUnSel2数组。
3.双击list中每一行的事件:直接在对话框的List Control控件上添加NM_DBLCLK事件
void ShowDlg::OnNMDblclkListShow(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: Add your control notification handler code here
int index = m_RoomsList.GetSelectionMark();//index就是你双击的行数,从0开始算
//createNewBrowserView(index);
*pResult = 0;
}
4.信息提示,即ToolTip的使用,参照:http://tieba.baidu.com/p/1988489739
其中m_nSubItem(-1), m_nItem(-1), m_bEnableTips(TRUE)
5.补充重绘CListCtrl的滚动条,参照资源中的http://download.csdn.net/detail/xuezhe521/5890809
6.多线程下载参照:http://www.vckbase.com/index.php/wv/1406,他的作者付黎,表示感谢,资源中有下载。