📄 qqlistview.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 + -