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

📄 qqlistview.cpp

📁 NOOPENQQ的源碼 NOOPENQQ是一個掛QQ的好軟件
💻 CPP
字号:
// QQListView.cpp : implementation file
//

#include "stdafx.h"
#include "noopenqqgui.h"
#include "QQListView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CQQListView

IMPLEMENT_DYNCREATE(CQQListView, CListView)

CQQListView::CQQListView(){}

CQQListView::~CQQListView(){}

BEGIN_MESSAGE_MAP(CQQListView, CListView)
	//{{AFX_MSG_MAP(CQQListView)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CQQListView drawing

void CQQListView::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// CQQListView diagnostics

#ifdef _DEBUG
void CQQListView::AssertValid() const
{
	CListView::AssertValid();
}

void CQQListView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CQQListView message handlers

static CQQListView::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;
	CWnd::Attach(hWnd);
	//CKListViewCtrl::SetStyle(WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_SHOWSELALWAYS);
	SetExtendedListViewStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |
		LVS_EX_LABELTIP | LVS_EX_UNDERLINEHOT |
		LVS_EX_ONECLICKACTIVATE | LVS_EX_HEADERDRAGDROP);
	AddColumns(Cols,RTL_NUMBER_OF(Cols));
}

CQQClientBase *CQQListView::GetListViewItem(int index){
	return ((CQQClientBase *)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;
		SetItem(&lvItem);
	}
}

int CQQListView::FindListViewItem(DWORD QQ){
	int count=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=*/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<RTL_NUMBER_OF(Cols);a++){
		col.pszText=buf;
		strcpy(buf,Cols[a].pszText);
		if(iSubItem==a)
			strcat(buf,isdesc?"↑":"↓");//"▲▼"
		SetColumn(a,&col);
	}
	SetSelectedColumn(iSubItem);
	SortItemsEx(ListViewCompareProc,iSubItem);
}

⌨️ 快捷键说明

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