noopenqqgui.cpp
来自「NOOPENQQ的源碼 NOOPENQQ是一個掛QQ的好軟件」· C++ 代码 · 共 236 行
CPP
236 行
#include "stdafx.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)
/////////////////////////////////////////////////////////////////////////////
// CNoOpenQQGui dialog
CNoOpenQQGui::CNoOpenQQGui(CWnd* pParent /*=NULL*/)
: CDialog(CNoOpenQQGui::IDD, pParent){}
void CNoOpenQQGui::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CNoOpenQQGui, CDialog)
//{{AFX_MSG_MAP(CNoOpenQQGui)
ON_WM_CLOSE()
ON_WM_SIZE()
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNoOpenQQGui message handlers
BOOL CNoOpenQQGui::OnInitDialog(){
CDialog::OnInitDialog();
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);
RECT Rc={0,0,0,0};
m_ToolBar.Create(WS_CHILD|WS_VISIBLE|TBSTYLE_WRAPABLE|TBSTYLE_TOOLTIPS|TBSTYLE_FLAT,
Rc,this,0);
//m_ToolBar.Create(m_hWnd);
::SetWindowLong(m_ToolBar.GetToolTips()->m_hWnd,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(CSize(0,0));
m_ToolBar.SetButtonSize(CSize(36,22));
m_StatusBar.Create(WS_CHILDWINDOW|WS_VISIBLE,Rc,this,0);
m_QQListView.InitListView(::GetDlgItem(CWnd::GetSafeHwnd(),IDC_LIST_QQCLIENT));
OnSize(0,0,0);
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,NULL);
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();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CNoOpenQQGui::OnClose(){
//m_TrayIcon.Hide();
m_lpQQConfig->SaveConfig();
m_lpQQGuiWnd->Delete();
m_lpQQConfig->Delete();
m_QQListView.m_hWnd=0;
CDialog::OnClose();
}
void CNoOpenQQGui::OnSize(UINT nType, int cx, int cy){
//CDialog::OnSize(nType, cx, cy);
if(!m_ToolBar.m_hWnd)return;
RECT Rc;
m_ToolBar.SendMessage(TB_AUTOSIZE);
m_ToolBar.GetWindowRect(&Rc);
long th=Rc.bottom-Rc.top;
m_StatusBar.SendMessage(WM_SIZE);
m_StatusBar.GetWindowRect(&Rc);
int sh=Rc.bottom-Rc.top;
GetClientRect(&Rc);
m_QQListView.MoveWindow(0,th,Rc.right,Rc.bottom-sh-th);
}
BOOL CNoOpenQQGui::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
switch(((LPNMHDR)lParam)->code){
case TTN_NEEDTEXT:{
LPTOOLTIPTEXT lptip=(LPTOOLTIPTEXT)lParam;
int i=(int)lptip->hdr.idFrom-TB_CMD_BEGIN;
if(i>=0 && i<RTL_NUMBER_OF(m_ToolBarTipStr))
lptip->lpszText=m_ToolBarTipStr[i];
}break;
case NM_RCLICK:
if(((LPNMHDR)lParam)->hwndFrom==m_QQListView.m_hWnd)AddQQ(TRUE);
break;
case LVN_COLUMNCLICK://排序
m_QQListView.OnSortBy(LPNM_LISTVIEW(lParam)->iSubItem);
break;
}
//return CDialog::OnNotify(wParam, lParam, pResult);
return FALSE;
}
BOOL EnumQQClientOnTm(CQQClientBase *lpQQClientBase,va_list argptr){
(*va_arg(argptr,DWORD *))++;
if(lpQQClientBase->m_IsLogin)
(*va_arg(argptr,DWORD *))++;
return FALSE;
}
void CNoOpenQQGui::OnTimer(UINT nIDEvent){
//CDialog::OnTimer(nIDEvent);
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(buf,0,0);
}
#include "QQEditDlg.h"
void CNoOpenQQGui::AddQQ(BOOL IsEdit){
CQQEditDlg m_EditDlg(this);
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.AddHead(lpQQClient);
}
count--;
}
}
if(m_EditDlg.Run(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);
}
BOOL CNoOpenQQGui::OnCommand(WPARAM wParam, LPARAM lParam)
{
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;
}
return CDialog::OnCommand(wParam, lParam);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?