📄 qqlistdlg.cpp
字号:
// QQlistDlg.cpp : implementation file
//
#include "stdafx.h"
#include "QQ自动登陆器.h"
#include "QQlistDlg.h"
#include "MD5.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// QQlistDlg dialog
QQlistDlg::QQlistDlg(CWnd* pParent /*=NULL*/)
: CDialog(QQlistDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(QQlistDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void QQlistDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(QQlistDlg)
DDX_Control(pDX, IDC_LIST_QQNUMLIST, m_QIDList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(QQlistDlg, CDialog)
//{{AFX_MSG_MAP(QQlistDlg)
ON_BN_CLICKED(IDC_BUTTON_ADDQQ, OnButtonAddqq)
ON_BN_CLICKED(IDC_BUTTON_RUNQQ, OnButtonRunqq)
ON_BN_CLICKED(IDC_BUTTON_LOGONTHIS, OnButtonLogonthis)
ON_BN_CLICKED(IDC_BUTTON_EDITQQ, OnButtonEditqq)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_QQNUMLIST, OnDblclkListQQnumlist)
ON_BN_CLICKED(IDC_BUTTON_DELQQ, OnButtonDelqq)
ON_BN_CLICKED(IDC_BUTTON_LOGONCHECKED, OnButtonLogonchecked)
ON_BN_CLICKED(IDC_BUTTON_LOGONALL, OnButtonLogonall)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_QQNUMLIST, OnItemchangedListQqnumlist)
ON_NOTIFY(NM_CLICK, IDC_LIST_QQNUMLIST, OnClickListQqnumlist)
ON_NOTIFY(NM_RCLICK, IDC_LIST_QQNUMLIST, OnRclickListQqnumlist)
ON_COMMAND(ID_MENUITEM_HELP, OnMenuitemHelp)
ON_COMMAND(ID_MENUITEM_ALLSEL, OnMenuitemAllsel)
ON_COMMAND(ID_MENUITEM_INVSEL, OnMenuitemInvsel)
ON_COMMAND(ID_MENUITEM_LOGONALL, OnMenuitemLogonall)
ON_COMMAND(ID_MENUITEM_LOGONCHKED, OnMenuitemLogonchked)
ON_COMMAND(ID_MENUITEM_LOGONTHIS, OnMenuitemLogonthis)
ON_COMMAND(ID_MENUITEM_NOSEL, OnMenuitemNosel)
ON_COMMAND(ID_MENUITEM_CLR, OnMenuitemClr)
ON_COMMAND(ID_MENUITEM_DEL, OnMenuitemDel)
ON_COMMAND(ID_MENUITEM_EDIT, OnMenuitemEdit)
ON_COMMAND(ID_MENUITEM_ADD, OnMenuitemAdd)
ON_COMMAND(ID_MENUITEM_JUST_RUNQQ, OnMenuitemJustRunqq)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// QQlistDlg message handlers
BOOL QQlistDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//获取原风格属性
DWORD dwStyle = m_QIDList.GetExtendedStyle();
//添加CheckBox、整行选中、表格线属性
dwStyle |= LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
//设置新属性到控件
m_QIDList.SetExtendedStyle( dwStyle );
m_QIDList.InsertColumn(0, "", LVCFMT_LEFT, 20);
m_QIDList.InsertColumn(1, "QQ号", LVCFMT_LEFT, 72);
m_QIDList.InsertColumn(2, "昵称", LVCFMT_LEFT, 84);
m_QIDList.InsertColumn(3, "状态", LVCFMT_LEFT, 36);
QQAdd.Create(IDD_DIALOG4,AfxGetMainWnd()->GetDlgItem(IDC_TAB1));
bInitFinish = FALSE;
bAddOrEditFinish = TRUE;
InitQQList();
return FALSE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void QQlistDlg::InitQQList()
{
iCheckItems = 0;
for (int i = 0; i< QQInfoList.size(); i++)
{
m_QIDList.InsertItem(i, "", 0);
m_QIDList.SetItem(i, 1, LVIF_TEXT, QQInfoList[i].GetQQNbr(), 0, NULL, NULL, NULL);
m_QIDList.SetItem(i, 2, LVIF_TEXT, QQInfoList[i].GetQQName(), 0, NULL, NULL, NULL);
m_QIDList.SetItem(i, 3, LVIF_TEXT, QQInfoList[i].GetQQStat(), 0, NULL, NULL, NULL);
m_QIDList.SetCheck(i,QQInfoList[i].IsUsing());
if (QQInfoList[i].IsUsing())
{
iCheckItems++;
}
}
if (QQInfoList.size() > 0)
{
m_QIDList.SetSelectionMark(0);
m_QIDList.SetItemState(0, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}
QQListButtonUpdate();
bInitFinish = TRUE;
}
void QQlistDlg::QQListButtonUpdate()
{
if (QQInfoList.size() > 0)
{
int iItem = m_QIDList.GetSelectionMark();
if (-1 != iItem)
{
CString sLogonSelect;
sLogonSelect.Format("登第(%d)个",iItem+1);
SetDlgItemText(IDC_BUTTON_LOGONTHIS, sLogonSelect);
}
else
{
SetDlgItemText(IDC_BUTTON_LOGONTHIS, "登选中");
}
if (iCheckItems)
{
CString sCheckItems;
sCheckItems.Format("登打钩(%d)",iCheckItems);
SetDlgItemText(IDC_BUTTON_LOGONCHECKED, sCheckItems);
}
else
{
SetDlgItemText(IDC_BUTTON_LOGONCHECKED, "登打钩");
}
CString sAllItems;
sAllItems.Format("登全部(%d)",QQInfoList.size());
SetDlgItemText(IDC_BUTTON_LOGONALL, sAllItems);
}
else
{
SetDlgItemText(IDC_BUTTON_LOGONTHIS, "登选中");
SetDlgItemText(IDC_BUTTON_LOGONCHECKED, "登打钩");
SetDlgItemText(IDC_BUTTON_LOGONALL, "登全部");
}
}
// 切换到QQ设置界面
void QQlistDlg::ChangeToQQSetDlg()
{
CTabCtrl* pQListTab = (CTabCtrl*)((CDialog*)AfxGetMainWnd())->GetDlgItem(IDC_TAB1);
pQListTab->SetCurSel(1);
NMHDR nmhdr;
nmhdr.code=TCN_SELCHANGE;
nmhdr.hwndFrom=pQListTab->GetSafeHwnd();
nmhdr.idFrom=IDC_TAB1;
::SendMessage(nmhdr.hwndFrom,WM_NOTIFY,(WPARAM)IDC_TAB1,(LPARAM)(&nmhdr));
}
void QQlistDlg::OnButtonRunqq()
{
if (QQPathValid)
{
RunQQ(g_QQPath,"");
}
else
{
ChangeToQQSetDlg();
}
}
void QQlistDlg::OnButtonLogonthis()
{
int QQIdx = m_QIDList.GetSelectionMark();
if (QQPathValid) // && QQInfoList[QQIdx].IsUsing()
{
if (-1 != QQIdx)
{
vector<CString> LogonedQQList;
FindLogonedQQ(LogonedQQList);
if (!IsInLogonedList(QQInfoList[QQIdx].GetQQNbr(), LogonedQQList))
{
RunQQ(g_QQPath,QQInfoList[QQIdx].GetQQLogonStr());
}
}
}
else
{
ChangeToQQSetDlg();
}
}
void QQlistDlg::OnButtonLogonchecked()
{
if (QQPathValid)
{
vector<CString> LogonedQQList;
FindLogonedQQ(LogonedQQList);
for (int i = 0; i < QQInfoList.size(); i++)
{
if (QQInfoList[i].IsUsing() && !IsInLogonedList(QQInfoList[i].GetQQNbr(), LogonedQQList))
{
RunQQ(g_QQPath,QQInfoList[i].GetQQLogonStr());
}
}
if (g_AutoExit == "是")
{
::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,NULL,NULL);
}
}
else
{
ChangeToQQSetDlg();
}
}
void QQlistDlg::OnButtonLogonall()
{
if (QQPathValid)
{
for (int i = 0; i < QQInfoList.size(); i++)
{
vector<CString> LogonedQQList;
FindLogonedQQ(LogonedQQList);
if (!IsInLogonedList(QQInfoList[i].GetQQNbr(), LogonedQQList))
{
RunQQ(g_QQPath,QQInfoList[i].GetQQLogonStr());
}
}
if (g_AutoExit == "是")
{
::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,NULL,NULL);
}
}
else
{
ChangeToQQSetDlg();
}
}
// 切换到QQ添加界面
void QQlistDlg::ChangeToAddQQDlg()
{
ShowWindow(SW_HIDE);
CRect rs;
QQAdd.GetParent()->GetClientRect(rs);
rs.top+=20;
rs.bottom-=4;
rs.left+=4;
rs.right-=4;
QQAdd.MoveWindow(rs);
QQAdd.SetDlgItemText(IDC_RESULT_INFO, "赶快啊!打个字都这么慢!");
QQAdd.ShowWindow(SW_SHOW);
ShowAddDlg = TRUE;
}
void QQlistDlg::OnButtonAddqq()
{
ChangeToAddQQDlg();
QQAdd.ClearQQInfo();
}
void QQlistDlg::OnButtonEditqq()
{
QQInfoIndex = m_QIDList.GetSelectionMark();
if (-1 == QQInfoIndex)
{
if (0 == m_QIDList.GetItemCount())
{
//AfxMessageBox("错误: 列表中还没添加任何QQ号!");
}
else
{
//AfxMessageBox("错误: 请先选择一个QQ号,再继续操作!");
}
return;
}
else
{
EditQQInfo = TRUE;
ChangeToAddQQDlg();
QQAdd.SetQQInfoShow(QQInfoList[QQInfoIndex]);
}
}
void QQlistDlg::OnDblclkListQQnumlist(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if (0 != pNMListView->iSubItem)
{
OnButtonLogonthis();
}
*pResult = 0;
}
void QQlistDlg::QQListUpdate()
{
bAddOrEditFinish = FALSE;
if (QQListNeedUpdate) // 修改了
{
if (TRUE == EditQQInfo) // 是编辑其中一项
{
if (-1!=QQInfoIndex && QQInfoIndex < m_QIDList.GetItemCount())
{
int i = QQInfoIndex;
m_QIDList.SetItem(i, 1, LVIF_TEXT, QQInfoList[i].GetQQNbr(), 0, NULL, NULL, NULL);
m_QIDList.SetItem(i, 2, LVIF_TEXT, QQInfoList[i].GetQQName(), 0, NULL, NULL, NULL);
m_QIDList.SetItem(i, 3, LVIF_TEXT, QQInfoList[i].GetQQStat(), 0, NULL, NULL, NULL);
m_QIDList.SetCheck(i,QQInfoList[i].IsUsing());
m_QIDList.SetSelectionMark(i);
}
}
else // 添加一项或多项
{
/*
if (m_QIDList.GetItemCount()>0)
{
m_QIDList.DeleteAllItems();
}*/
for (int i = g_QQListLength; i< QQInfoList.size(); i++)
{
m_QIDList.InsertItem(i, "", 0);
m_QIDList.SetItem(i, 1, LVIF_TEXT, QQInfoList[i].GetQQNbr(), 0, NULL, NULL, NULL);
m_QIDList.SetItem(i, 2, LVIF_TEXT, QQInfoList[i].GetQQName(), 0, NULL, NULL, NULL);
m_QIDList.SetItem(i, 3, LVIF_TEXT, QQInfoList[i].GetQQStat(), 0, NULL, NULL, NULL);
m_QIDList.SetCheck(i,QQInfoList[i].IsUsing());
iCheckItems++;
}
g_QQListLength = QQInfoList.size();
QQListButtonUpdate();
}
}
else // 没修改
{
// 什么都不做
}
UpdateWindow();
EditQQInfo = FALSE;
QQInfoIndex = -1;
QQListNeedUpdate = FALSE;
bAddOrEditFinish = TRUE;
}
void QQlistDlg::OnButtonDelqq()
{
int ToDelIndx = m_QIDList.GetSelectionMark();
if (-1 == ToDelIndx)
{
if (0 == m_QIDList.GetItemCount())
{
//AfxMessageBox("错误: 列表中还没添加任何QQ号!");
}
else
{
//AfxMessageBox("错误: 请先选择一个QQ号,再继续操作!");
}
return;
}
else
{
CString QQNbrToDel = QQInfoList[ToDelIndx].GetQQNbr();
CString WarnningMsg = "确认将 QQ: " + QQNbrToDel + " 从列表中删除吗?";
if (IDOK == MessageBox(WarnningMsg, "注意:", MB_OKCANCEL))
{
if (QQInfoList[ToDelIndx].IsUsing())
{
iCheckItems--;
}
m_QIDList.DeleteItem(ToDelIndx);
std::vector<QQInfo>::iterator pos=QQInfoList.begin();
QQInfoList.erase(pos+ToDelIndx);
g_QQListLength = QQInfoList.size();
if (ToDelIndx-1 >= 0)
{
m_QIDList.SetSelectionMark(ToDelIndx-1);
m_QIDList.SetItemState(ToDelIndx-1, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}
else if (ToDelIndx < QQInfoList.size())
{
m_QIDList.SetSelectionMark(ToDelIndx);
m_QIDList.SetItemState(ToDelIndx, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}
QQListButtonUpdate();
// 清空,再写入
WriteIniQQList(QQLIST_CONTENT, QQLISTNO, QQInfoList, g_ConfigFilePath, TRUE);
CString QQCount;
QQCount.Format("%d",g_QQListLength);
WritePrivateProfileString(MAIN_CONFIG,QQLIST_LEN,QQCount,g_ConfigFilePath);
}
}
}
BOOL QQlistDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
{
return TRUE;
}
if (pMsg->message == WM_KEYDOWN && (pMsg->wParam == VK_SPACE || pMsg->wParam == VK_ESCAPE))
{
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}
void QQlistDlg::OnItemchangedListQqnumlist(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE pNMLV = (LPNMITEMACTIVATE)pNMHDR;
if (bInitFinish && bAddOrEditFinish)
{
int i = pNMLV->iItem;
if((pNMLV->uOldState & INDEXTOSTATEIMAGEMASK(1)) /* old state : unchecked */
&& (pNMLV->uNewState & INDEXTOSTATEIMAGEMASK(2))) /* new state : checked */
{
QQInfoList[i].SetQQUsOrNot("挂");
WriteIniQQNbr(QQLIST_CONTENT, QQLISTNO, i, QQInfoList[i].GetConfStr(), g_ConfigFilePath);
iCheckItems++;
QQListButtonUpdate();
}
else if((pNMLV->uOldState & INDEXTOSTATEIMAGEMASK(2)) /* old state : checked */
&& (pNMLV->uNewState & INDEXTOSTATEIMAGEMASK(1))) /* new state : unchecked */
{
QQInfoList[i].SetQQUsOrNot("停");
WriteIniQQNbr(QQLIST_CONTENT, QQLISTNO, i, QQInfoList[i].GetConfStr(), g_ConfigFilePath);
iCheckItems--;
QQListButtonUpdate();
}
else
{
// 状态没变
}
}
*pResult = 0;
}
void QQlistDlg::OnClickListQqnumlist(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE lpNMIA = (LPNMITEMACTIVATE)pNMHDR;
int nItem = lpNMIA->iItem;
if (-1 != nItem)
{
CString sLogonSelect;
sLogonSelect.Format("登第(%d)个",nItem+1);
SetDlgItemText(IDC_BUTTON_LOGONTHIS, sLogonSelect);
}
*pResult = 0;
}
void QQlistDlg::OnRclickListQqnumlist(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE lpNMIA = (LPNMITEMACTIVATE)pNMHDR;
int nItem = lpNMIA->iItem;
if (-1 != nItem)
{
CString sLogonSelect;
sLogonSelect.Format("登第(%d)个",nItem+1);
SetDlgItemText(IDC_BUTTON_LOGONTHIS, sLogonSelect);
}
POINT point = lpNMIA->ptAction;
CMenu menu;
menu.LoadMenu(IDR_MENU_QQLIST);
CMenu* pPopup = menu.GetSubMenu(0);
ClientToScreen(&point);
pPopup->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON,point.x,point.y,this);
*pResult = 0;
}
void QQlistDlg::OnMenuitemHelp()
{
AfxMessageBox("没有帮助!");
}
void QQlistDlg::OnMenuitemAllsel()
{
bAddOrEditFinish = FALSE;
for (int i = 0; i < QQInfoList.size(); i++)
{
QQInfoList[i].SetQQUsOrNot("挂");
m_QIDList.SetCheck(i,1);
WriteIniQQNbr(QQLIST_CONTENT, QQLISTNO, i, QQInfoList[i].GetConfStr(), g_ConfigFilePath);
}
iCheckItems = QQInfoList.size();
QQListButtonUpdate();
bAddOrEditFinish = TRUE;
}
void QQlistDlg::OnMenuitemInvsel()
{
bAddOrEditFinish = FALSE;
for (int i = 0; i < QQInfoList.size(); i++)
{
if (QQInfoList[i].IsUsing())
{
QQInfoList[i].SetQQUsOrNot("停");
iCheckItems--;
}
else
{
QQInfoList[i].SetQQUsOrNot("挂");
iCheckItems++;
}
m_QIDList.SetCheck(i,QQInfoList[i].IsUsing());
WriteIniQQNbr(QQLIST_CONTENT, QQLISTNO, i, QQInfoList[i].GetConfStr(), g_ConfigFilePath);
}
QQListButtonUpdate();
bAddOrEditFinish = TRUE;
}
void QQlistDlg::OnMenuitemNosel()
{
bAddOrEditFinish = FALSE;
for (int i = 0; i < QQInfoList.size(); i++)
{
QQInfoList[i].SetQQUsOrNot("停");
m_QIDList.SetCheck(i,0);
WriteIniQQNbr(QQLIST_CONTENT, QQLISTNO, i, QQInfoList[i].GetConfStr(), g_ConfigFilePath);
}
iCheckItems = 0;
QQListButtonUpdate();
bAddOrEditFinish = TRUE;
}
void QQlistDlg::OnMenuitemJustRunqq()
{
OnButtonRunqq();
}
void QQlistDlg::OnMenuitemLogonthis()
{
OnButtonLogonthis();
}
void QQlistDlg::OnMenuitemLogonchked()
{
OnButtonLogonchecked();
}
void QQlistDlg::OnMenuitemLogonall()
{
OnButtonLogonall();
}
void QQlistDlg::OnMenuitemAdd()
{
OnButtonAddqq();
}
void QQlistDlg::OnMenuitemEdit()
{
OnButtonEditqq();
}
void QQlistDlg::OnMenuitemDel()
{
OnButtonDelqq();
}
void QQlistDlg::OnMenuitemClr()
{
QQInfoList.clear();
m_QIDList.DeleteAllItems();
WritePrivateProfileString(MAIN_CONFIG,QQLIST_LEN,"0",g_ConfigFilePath);
WritePrivateProfileString(QQLIST_CONTENT,NULL,NULL,g_ConfigFilePath);
QQListButtonUpdate();
iCheckItems = 0;
g_QQListLength = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -