📄 noopenqqgui.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 + -