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

📄 noopenqqgui.cpp

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

char * m_ToolBarStr[]={"全选","上线","下线","添加","删除","说明","主页"};
char * m_ToolBarTipStr[]={"选择所有QQ","使选择的QQ上线","使选择的QQ下线",
						"添加新的QQ","删除所选的QQ","使用事项","访问官方主页"};

#define TB_CMD_BEGIN	100
enum{TB_CMD_SELALL=TB_CMD_BEGIN,TB_CMD_LOGIN,TB_CMD_LOGOUT,
	TB_CMD_ADD,TB_CMD_DEL,TB_CMD_ABOUT,TB_CMD_HOMEPAGE
};
TBBUTTON m_ToolBarBut[]={
	{0,TB_CMD_SELALL,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0},
	{0,TB_CMD_LOGIN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,1},
	{0,TB_CMD_LOGOUT,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,2},
	{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0},
	{0,TB_CMD_ADD,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,3},
	{0,TB_CMD_DEL,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,4},
	{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0},
	{0,TB_CMD_ABOUT,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,5},
	{0,TB_CMD_HOMEPAGE,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,6}
};

#define TM_ID_UPDATE	0
#define TM_TM_UPDATE	(1000*30)

//BOOL CNoOpenQQGui::OnHookQQGuiMsg(CQQGuiWndBase *This,UINT Msg,WPARAM wParam,LPARAM lParam,LRESULT &RetV){
//	return FALSE;
//}

#define WM_ICON (WM_USER+1)
CKTrayIcon m_TrayIcon;
UINT IconMsg;

LRESULT CNoOpenQQGui::OnMsg(UINT Msg,WPARAM wParam,LPARAM lParam){
	switch(Msg){
		case WM_SIZE:
			if(wParam==SIZE_MINIMIZED)Hide();else OnReSize();
			break;
		case WM_TIMER:OnTimer();break;
		case WM_NOTIFY:OnNotify((LPNMHDR)lParam);break;
		case WM_COMMAND:
			switch(LOWORD(wParam)){
				case TB_CMD_ADD:AddQQ(FALSE);break;
				case TB_CMD_SELALL:m_QQListView.SelectAll();break;
				case TB_CMD_LOGIN:
				case TB_CMD_LOGOUT:
				case TB_CMD_DEL:
					RunSelListCmd(LOWORD(wParam));break;
				case TB_CMD_HOMEPAGE:
					ShellExecute(NULL,"open","http://www.CHKen.com","","",SW_SHOWMAXIMIZED);break;
				case TB_CMD_ABOUT:
					MessageBox(
						"          MicroQQ 使用说明\r\n\r\n"
						"                      [插件:NoOpenQQ]\r\n\r\n"
						"---------------------------------------\r\n\r\n"
						"1.使用之前申请密码保护,后果自负\r\n"
						"2.请不要用于商业和非法用途\r\n"
						"3.在使用本软件时出现任何问题,请自行承担   \r\n\r\n"
						"---------------------------------------\r\n"
						"               首页:http://www.CHKen.com\r\n"
						"               论坛:http://www.d1w.cn"
						,"说明",MB_OK|MB_ICONQUESTION);
					break;
			}
			break;
		case WM_INITDIALOG:OnCreate();break;
		case WM_ENDSESSION:
		case WM_QUERYENDSESSION:
		case WM_CLOSE:OnClose();break;
		case WM_ICON:
			if(lParam==WM_LBUTTONUP){
				if(IsVisible()){
					Hide();
				}else{
					CKWnd::Restore();
					CKWnd::SetForegroundWindow();
					SetMinMem();
				}
			}
			break;
	}
	if(Msg==IconMsg)m_TrayIcon.Show();
	return FALSE;
}

void CNoOpenQQGui::OnCreate(){
	m_lpNoOpenQQGui=this;
	char WndTitle[512];
	sprintf(WndTitle,"NoOpenQQ [MicroQQ %x.%x]",m_lpQQPlugin->MicroQQ_MajorVer,m_lpQQPlugin->MicroQQ_MinorVer);
	SetWindowText(WndTitle);
	SetIcon(m_lpQQPlugin->hIcon,TRUE);
	m_ToolBar.Create(m_hWnd,
		WS_CHILD|WS_VISIBLE|TBSTYLE_WRAPABLE|TBSTYLE_TOOLTIPS|TBSTYLE_FLAT,
		0,0,0,0,0,0,0,0,0,0);
	//m_ToolBar.Create(m_hWnd);
	::SetWindowLong(m_ToolBar.GetToolTips(),GWL_STYLE,TTS_BALLOON | WS_POPUP);
	for(DWORD pts=0;pts<sizeof(m_ToolBarStr)/sizeof(char *);pts++)
		m_ToolBar.AddStrings(m_ToolBarStr[pts]);
	m_ToolBar.AddButtons(sizeof(m_ToolBarBut)/sizeof(TBBUTTON),m_ToolBarBut);
	m_ToolBar.SetBitmapSize(0,0);
	m_ToolBar.SetButtonSize(36,22);
	m_StatusBar.Create(WS_CHILDWINDOW|WS_VISIBLE,0,0,0,0,m_hWnd);
	m_QQListView.InitListView(GetDlgItem(IDC_LIST_QQCLIENT));
	OnReSize();

	m_lpQQConfig=(*m_lpQQPlugin->lpNewQQConfig)();
	m_lpOldOnSaveQQClient=m_lpQQConfig->m_lpOnSaveQQClient;
	m_lpQQConfig->m_lpOnSaveQQClient=CQQConfig_OnSaveQQClient;
	m_lpQQConfig->m_lpOnLoadAddQQClient=CQQConfig_OnLoadAddQQClient;
	m_lpQQGuiWnd=(*m_lpQQPlugin->lpNewQQGuiWnd)(m_lpQQConfig);
	//m_lpQQGuiWnd->m_lpOnHookMsg=OnHookQQGuiMsg;
	m_StartTime=time(NULL);
	OnTimer();
	SetTimer(TM_ID_UPDATE,TM_TM_UPDATE);

	m_lpQQConfig->LoadConfig();
	m_TrayIcon.InitData(0,m_hWnd,WM_ICON);
	strncpy(m_TrayIcon.szTip,WndTitle,sizeof(m_TrayIcon.szTip));
	m_TrayIcon.hIcon=m_lpQQPlugin->hIcon;
	IconMsg=m_TrayIcon.RegisterOnCreate();
	m_TrayIcon.Show();
}

void CNoOpenQQGui::OnClose(){
	m_TrayIcon.Hide();
	m_lpQQConfig->SaveConfig();
	m_lpQQGuiWnd->Delete();
	m_lpQQConfig->Delete();
	EndDialog();
}

void CNoOpenQQGui::OnReSize(){
	RECT Rc;
	m_ToolBar.AutoSize();
	m_ToolBar.GetWindowRect(&Rc);
	long th=Rc.bottom-Rc.top;
	m_StatusBar.AutoSize();
	m_StatusBar.GetWindowRect(&Rc);
	int sh=Rc.bottom-Rc.top;
	GetClientRect(&Rc);
	m_QQListView.MoveWindow(0,th,Rc.right,Rc.bottom-sh-th);
}

void CNoOpenQQGui::OnNotify(LPNMHDR pnmh){
	switch(pnmh->code){
		case TTN_NEEDTEXT:{
			LPTOOLTIPTEXT lptip=(LPTOOLTIPTEXT)pnmh;
			int i=(int)lptip->hdr.idFrom-TB_CMD_BEGIN;
			if(i>=0 && i<sizeofarray(m_ToolBarTipStr,char *))
				lptip->lpszText=m_ToolBarTipStr[i];
			}break;
		case NM_RCLICK:
			if(pnmh->hwndFrom==m_QQListView.m_hWnd)AddQQ(TRUE);
			break;
		case LVN_COLUMNCLICK://排序
			m_QQListView.OnSortBy(LPNM_LISTVIEW(pnmh)->iSubItem);
			break;
	}
}

BOOL EnumQQClientOnTm(CQQClientBase *lpQQClientBase,va_list argptr){
	(*va_arg(argptr,DWORD *))++;
	if(lpQQClientBase->m_IsLogin)
		(*va_arg(argptr,DWORD *))++;
	return FALSE;
}

void CNoOpenQQGui::OnTimer(){
	char buf[1024];
	DWORD OnLineCount=0;
	DWORD QQCount=0;
	m_lpQQGuiWnd->EnumQQClient(&EnumQQClientOnTm,&QQCount,&OnLineCount);
	long UserTime=(time(NULL)-m_StartTime)/60;
	sprintf(buf,"QQ[%d] 在线[%d]  运行[%d:%02d]",
		QQCount,OnLineCount,
		UserTime/60,UserTime % 60
		);
	m_StatusBar.SetText(0,buf);
}

#include "QQEditDlg.h"

void CNoOpenQQGui::AddQQ(BOOL IsEdit){
	CQQEditDlg m_EditDlg;
	if(IsEdit){
		int count=m_QQListView.GetItemCount()-1;
		while(count>=0){
			if(m_QQListView.GetItemState(count,LVIS_SELECTED)){
				CQQClientBase *lpQQClient=m_QQListView.GetListViewItem(count);
				if(lpQQClient)m_EditDlg.m_ClientNode.Add(lpQQClient);
			}
			count--;
		}
	}
	if(m_EditDlg.Run(m_hWnd,m_lpQQGuiWnd,&m_QQListView)==IDOK){
		//(*m_lpQQConfig->m_lpOnChangeConfig)(m_lpQQConfig);
	}
}

void CNoOpenQQGui::RunSelListCmd(DWORD CMD){
	int count=m_QQListView.GetItemCount()-1;
	while(count>=0){
		if(m_QQListView.GetItemState(count,LVIS_SELECTED)){
			CQQClientBase *lpQQClient=m_QQListView.GetListViewItem(count);
			if(lpQQClient){
				switch(CMD){
					case TB_CMD_DEL:
						m_QQListView.DeleteItem(count);
						lpQQClient->Delete();
						break;
					case TB_CMD_LOGIN:
						if(lpQQClient->m_IsLogin){
							if(lpQQClient->m_lpClientDataEx->m_Level_NextLevelDay==0)
								CQQClient_GetLevel(lpQQClient);
							if(lpQQClient->m_Status!=lpQQClient->m_LastStatus)
								lpQQClient->ChangeStatus();
						}else
							lpQQClient->Login();
						break;
					case TB_CMD_LOGOUT:
						lpQQClient->Logout();
						break;
				}
			}
		}
		count--;
	}
	OnTimer();
	//if(CMD==TB_CMD_DEL)(*m_lpQQConfig->m_lpOnChangeConfig)(m_lpQQConfig);
}

⌨️ 快捷键说明

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