⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qqlistview.cpp

📁 如果应用程序在共享 DLL 中使用 MFC
💻 CPP
字号:
#include "DllMain.h"
#include "QQListView.h"

static CKListViewCtrl::TAddColumnsStruct Cols[]={
	{"QQ号",LVCFMT_LEFT,70},
	{"状态",LVCFMT_LEFT,60},
	{"等级",LVCFMT_RIGHT,38},
	{"在线",LVCFMT_RIGHT,50},
	{"还需",LVCFMT_RIGHT,50}
};

void CQQListView::InitListView(HWND hWnd){
	m_hWnd=hWnd;
	//CKListViewCtrl::SetStyle(WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_SHOWSELALWAYS);
	CKListViewCtrl::SetExtendedListViewStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |
		LVS_EX_LABELTIP | LVS_EX_UNDERLINEHOT |
		LVS_EX_ONECLICKACTIVATE | LVS_EX_HEADERDRAGDROP);
	CKListViewCtrl::AddColumns(Cols,sizeofarray(Cols,CKListViewCtrl::TAddColumnsStruct));
}

CQQClientBase *CQQListView::GetListViewItem(int index){
	return ((CQQClientBase *)CKListViewCtrl::GetItemData(index));
}

void CQQListView::SetItem(DWORD QQ,int subitem,LPCSTR lpText){
	LVITEM lvItem = {0};
	lvItem.iItem = FindListViewItem(QQ);
	if(lvItem.iItem>=0){
		lvItem.mask = LVIF_TEXT;
		lvItem.pszText = (LPSTR)lpText;
		lvItem.iSubItem=subitem;
		CKListViewCtrl::SetItem(&lvItem);
	}
}

int CQQListView::FindListViewItem(DWORD QQ){
	int count=CKListViewCtrl::GetItemCount();
	while(count>0){
		count--;
		CQQClientBase *lpQQClient=GetListViewItem(count);
		if(lpQQClient && lpQQClient->m_QQ==QQ)return count;
	}
	return -1;
}

void CQQListView::AddQQ(CQQClientBase *&lpQQClientBase){
	int fi=FindListViewItem(lpQQClientBase->m_QQ);
	if(fi<0){
		char strItem[32];ltoa(lpQQClientBase->m_QQ,strItem,10);
		LVITEM lvItem={0};
		lvItem.mask=LVIF_TEXT|LVIF_PARAM;
		//lvItem.iItem=0;
		//lvItem.iSubItem=0;
		lvItem.lParam=(LPARAM)lpQQClientBase;
		lvItem.pszText=(LPTSTR)strItem;
		/*lvItem.iItem=*/CKListViewCtrl::InsertItem(&lvItem);
	}else{
		lpQQClientBase->Delete();
		lpQQClientBase=GetListViewItem(fi);
	}
}

static HWND sortlistwnd;static bool isdesc;//排序
int CALLBACK ListViewCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort){
	char lpStr1[MAX_PATH], lpStr2[MAX_PATH];
	int iResult=0;
	ListView_GetItemText(sortlistwnd,lParam1,lParamSort,lpStr1,sizeof(lpStr1));
	ListView_GetItemText(sortlistwnd,lParam2,lParamSort,lpStr2,sizeof(lpStr2));
	if(lParamSort==1){
		iResult=strcmp(lpStr1, lpStr2);
	}else{
		int a=atol(lpStr1);
		int b=atol(lpStr2);
		if(a>b)iResult=1;
		else if(a<b)iResult=-1;
		else iResult=0;
	}
	if(isdesc && (iResult!=0))iResult=-iResult;
	return iResult;
}

void CQQListView::OnSortBy(int iSubItem){
	sortlistwnd=m_hWnd;isdesc=!isdesc;
	char buf[256];
	LVCOLUMN col;col.mask=LVCF_TEXT;
	for(int a=0;a<sizeofarray(Cols,CKListViewCtrl::TAddColumnsStruct);a++){
		col.pszText=buf;
		strcpy(buf,Cols[a].pszText);
		if(iSubItem==a)
			strcat(buf,isdesc?"↑":"↓");//"▲▼"
		CKListViewCtrl::SetColumn(a,&col);
	}
	CKListViewCtrl::SetSelectedColumn(iSubItem);
	CKListViewCtrl::SortItemsEx(ListViewCompareProc,iSubItem);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -