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

📄 qqeditdlg.cpp

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

LRESULT CQQEditDlg::OnMsg(UINT Msg,WPARAM wParam,LPARAM lParam){
	switch(Msg){
		case WM_INITDIALOG:OnCreate();break;
		case WM_COMMAND:
			switch(LOWORD(wParam)){
				case IDCANCEL:EndDialog();break;
				case IDOK:OnOK();break;
			}
			break;
	}
	//return CKDialog::OnMsg(Msg,wParam,lParam);
	return FALSE;
}

void CQQEditDlg::OnCreate(){
	if( (m_IsEdit=(m_ClientNode.m_Count>0)) ){
		SetWindowText("编辑");
		CQQClientBase *lpClient=m_ClientNode.m_Root->data;
		m_Status=lpClient->m_Status;
		m_UseTM=lpClient->m_UseTM;
		m_HasVideo=lpClient->m_HasVideo;
		m_IsTCP=lpClient->m_lpSocket->m_IsTCP;
		m_AutoLogin=lpClient->m_lpClientDataEx->m_AutoLogin;
		m_AutoOff=lpClient->m_lpClientDataEx->m_AutoOff;
		m_OtherQQ=lpClient->m_lpClientDataEx->m_OtherQQ;
		m_SaveMsg=lpClient->m_lpClientDataEx->m_SaveMsg;
		strncpy(m_RetMsg,lpClient->m_lpClientDataEx->m_RetMsg,sizeof(m_RetMsg));
	}else{
		SetWindowText("添加");
		m_Status=QQ_STATUS_AWAY;
		m_UseTM=FALSE;
		m_HasVideo=FALSE;
		m_AutoOff=TRUE;
		m_IsTCP=FALSE;
		m_AutoLogin=FALSE;
		m_OtherQQ=0;
		m_SaveMsg=FALSE;
		strcpy(m_RetMsg,"这家伙很牛,挂Q中...");
	}
	CheckDlgButton( (m_Status==QQ_STATUS_ONLINE?IDC_RADIO1:
		(m_Status==QQ_STATUS_AWAY?IDC_RADIO2:IDC_RADIO3 ) ),TRUE);
	if(m_OtherQQ>10000)
		SetDlgItemInt(IDC_EDIT_TOQQ,m_OtherQQ);
	CheckDlgButton(IDC_CHECK_VIDEO,m_HasVideo);
	CheckDlgButton(IDC_CHECK_AUTOLOGIN,m_AutoLogin);
	CheckDlgButton(IDC_CHECK_AUTOLOGOUT,m_AutoOff);
	CheckDlgButton(IDC_CHECK_USETM,m_UseTM);
	CheckDlgButton(IDC_CHECK_TCP,m_IsTCP);
	CheckDlgButton(IDC_CHECK_SAVEMSG,m_SaveMsg);
	SetDlgItemText(IDC_EDIT_RET_MSG,m_RetMsg);
	char buf[64*1024-1];
	char *lpbuf=buf;
	*lpbuf=0;
	for(CQQClientNode::LPNode lpNode=m_ClientNode.m_Root;lpNode;lpNode=lpNode->pNext){
		lpbuf+=sprintf(lpbuf,"%d\r\n",lpNode->data->m_QQ);
		if( (lpbuf-buf)>(64*1024-512)){
			strcpy(lpbuf,"...");
			break;
		}
	}
	SetDlgItemText(IDC_EDIT_QQ_PWD,buf);
}

void CQQEditDlg::OnOK(){
	char buf[64*1024-1];long qq;
	if(IsRadioButtonCheck(IDC_RADIO1))m_Status=QQ_STATUS_ONLINE;
	if(IsRadioButtonCheck(IDC_RADIO2))m_Status=QQ_STATUS_AWAY;
	if(IsRadioButtonCheck(IDC_RADIO3))m_Status=QQ_STATUS_HIDDEN;
	m_OtherQQ=GetDlgItemInt(IDC_EDIT_TOQQ);
	if(m_OtherQQ<10001)m_OtherQQ=0;
	m_HasVideo=IsRadioButtonCheck(IDC_CHECK_VIDEO);
	m_AutoLogin=IsRadioButtonCheck(IDC_CHECK_AUTOLOGIN);
	m_AutoOff=IsRadioButtonCheck(IDC_CHECK_AUTOLOGOUT);
	m_UseTM=IsRadioButtonCheck(IDC_CHECK_USETM);
	m_IsTCP=IsRadioButtonCheck(IDC_CHECK_TCP);
	m_SaveMsg=IsRadioButtonCheck(IDC_CHECK_SAVEMSG);
	GetDlgItemText(IDC_EDIT_RET_MSG,m_RetMsg,sizeof(m_RetMsg));

	GetDlgItemText(IDC_EDIT_QQ_PWD,buf,sizeof(buf));
	char *pp;
	char *pnext=buf;
	while(pp=kenstrtok(pnext,"\r\n")){
		LPSTR lppwd=strchr(pp,'-');
		if(lppwd){
			*lppwd++=0;
			while(*lppwd=='-')lppwd++;
		}
		qq=atol(pp);
		if(qq<10001)continue;
		CQQClientBase *lpClient=NULL;
		CQQClientNode::LPNode lpNode=m_ClientNode.m_Root;
		for(;lpNode;lpNode=lpNode->pNext)
			if(lpNode->data->m_QQ==(DWORD)qq){
				lpClient=lpNode->data;
				lpNode=lpNode->pNext;//pPrev;
				break;
			}
		if(lpNode==NULL)lpNode=m_ClientNode.m_Root;
		if(lpClient==NULL){
			lpClient=m_lpQQPlugin->lpNewQQClient(m_lpGuiWndBase);
			lpClient->m_QQ=qq;
			m_ClientNode.Add(lpClient);
			m_lpQQListView->AddQQ(lpClient);
			void AttachQQClient(CQQClientBase *lpClient);
			AttachQQClient(lpClient);
			if(lpNode)
				memcpy(lpClient->m_Password,lpNode->data->m_Password,QQ_KEY_LENGTH);
		}
		if(lppwd){
			if(*lppwd){
				lpClient->SetLoginPassword(lppwd);//此处为了简化,使用主程序的MD5计算密码
				//你也可以使用自己的MD5计算两次,再复制到密码数据 [m_Password]
			}else{
				if(lpNode)
					memcpy(lpClient->m_Password,lpNode->data->m_Password,QQ_KEY_LENGTH );
			}
		}
		bool IsChangeStatus=false;
		bool IsReLogin=false;
			if(lpClient->m_Status!=m_Status)IsChangeStatus=true;
		lpClient->m_Status=m_Status;
			if(lpClient->m_UseTM!=m_UseTM)IsReLogin=true;
		lpClient->m_UseTM=m_UseTM;
			if(lpClient->m_HasVideo!=m_HasVideo)IsChangeStatus=true;
		lpClient->m_HasVideo=m_HasVideo;
			if(lpClient->m_lpSocket->m_IsTCP!=m_IsTCP)IsReLogin=true;
		lpClient->m_lpSocket->m_IsTCP=m_IsTCP;
		lpClient->m_lpClientDataEx->m_AutoLogin=m_AutoLogin;
		lpClient->m_lpClientDataEx->m_AutoOff=m_AutoOff;
		lpClient->m_lpClientDataEx->m_OtherQQ=m_OtherQQ;
		lpClient->m_lpClientDataEx->m_SaveMsg=m_SaveMsg;
		strncpy(lpClient->m_lpClientDataEx->m_RetMsg,m_RetMsg,sizeof(lpClient->m_lpClientDataEx->m_RetMsg));
		if(IsReLogin || (!lpClient->m_IsLogin && m_AutoLogin)){
			lpClient->Login();
		}else if(IsChangeStatus && lpClient->m_IsLogin)
			lpClient->ChangeStatus();
	}
	//GetDlgItemText(IDC_EDIT_PWD,m_PWD,sizeof(m_PWD));
	EndDialog(IDOK);
}

⌨️ 快捷键说明

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