📄 myqqdlg.cpp
字号:
// MyQQDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MyQQ.h"
#include "MyQQDlg.h"
#include "about.h"
#include "QQSendMessage.h"
#include "MainDlg.h"
#include "MainDialog.h"
#include "MainInfo.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//////////////////////////////////////////////////////////////////////////
// 添加的代码在此
#define WM_DISPLAYTASKICON WM_USER+102
#define WM_MYMOUSEMOVE WM_USER+101
#define ID_QQTREE 8001
#define ID_QQOTHERS 8002
static CString myClass[10]=
{
"曹昱", "龚亮华", "王娜",
"陈春雷","王倩","何丰",
"周帆", "江红玉","张振华","岑高峰"
};
CString treeItem[6]=
{
"此处显示群信息",
"生产实习1组",
"生产实习2组",
"其它群",
"群内组织",
"讨论组"
};
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// CMyQQDlg dialog
CMyQQDlg::CMyQQDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMyQQDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
isDisplayInTask=true;
}
void CMyQQDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyQQDlg)
DDX_Control(pDX, IDC_QQFRIEND, m_QQfriend);
DDX_Control(pDX, IDC_OTHERS, m_QQothers);
DDX_Control(pDX, IDC_QQQUN, m_QQqun);
DDX_Control(pDX, IDC_STATUSPICTURE, m_statusPic);
DDX_Control(pDX, IDC_LIST1, m_List1);
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMyQQDlg, CDialog)
//{{AFX_MSG_MAP(CMyQQDlg)
ON_MESSAGE(WM_DISPLAYTASKICON, OnDisplayTaskIcon)
ON_MESSAGE(WM_MYMOUSEMOVE, OnMymouseMove)
ON_NOTIFY(NM_DBLCLK, ID_QQTREE, OnDblclkQQqunTree)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_QQFRIEND, OnQqfriend)
ON_BN_CLICKED(IDC_QQQUN, OnQqqun)
ON_BN_CLICKED(IDC_OTHERS, OnOthers)
ON_COMMAND(ID_SHOWMAX, OnShowmax)
ON_COMMAND(ID_SHOWMIN, OnShowmin)
ON_NOTIFY(NM_RCLICK, IDC_LIST1, OnRclickList1)
ON_BN_CLICKED(IDC_QQMENU, OnQqmenu)
ON_BN_CLICKED(IDC_QQSTATUS, OnQqstatus)
ON_COMMAND(ID_HIDDEN, OnHidden)
ON_COMMAND(ID_ONLINE, OnOnline)
ON_COMMAND(ID_OUTLINE, OnOutline)
ON_COMMAND(ID_EXIT, OnExit)
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkMyFriend)
ON_WM_CLOSE()
ON_WM_TIMER()
ON_WM_LBUTTONDBLCLK()
ON_WM_LBUTTONDOWN()
ON_WM_RBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyQQDlg message handlers
BOOL CMyQQDlg::OnInitDialog()
{
//////////////////////////////////////////////////////////////////////////
// 初始化的代码
isMinimize=FALSE;
isClose=false;
CDialog::OnInitDialog();
// 将该对话框放置到右上角;
GetWindowRect(&dlgrect);
MoveWindow(GetSystemMetrics(SM_CXSCREEN)-dlgrect.Width()-20, 0,
dlgrect.Width(), dlgrect.Height(), true);
//////////////////////////////////////////////////////////////////////////
CDialog::OnInitDialog();
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
//////////////////////////////////////////////////////////////////////////
// 获取得第一个按钮和最后一个按钮的位置
GetDlgItem(IDC_QQFRIEND)->GetWindowRect(&rect0);
ScreenToClient(&rect0);
GetDlgItem(IDC_QQQUN)->GetWindowRect(&rect1);
ScreenToClient(&rect1);
//////////////////////////////////////////////////////////////////////////
// 此处创建一颗树,群树;
int treex, treey;
treex=0;
treey=rect0.bottom+rect0.Height();
if(!treeCtrl.Create(WS_CHILD| WS_BORDER | WS_TABSTOP|TVS_HASBUTTONS |
TVS_HASLINES | TVS_LINESATROOT | WS_BORDER ,
//CRect(0, 0, 150, 300),
CRect(treex, treey,
rect0.Width(),
rect1.bottom),
this, ID_QQTREE))
{
MessageBox("QQ群创建失败\n程序异常终止!");
return -1;
}
DisplayQQface(); // 显示QQface
treeCtrl.SetImageList ( &m_treeQunimage,TVSIL_NORMAL);
treeCtrl.SetTextColor (RGB(255,0,0));
treeCtrl.InsertItem(_T(treeItem[0]), 0, 0);
HTREEITEM hroot0=treeCtrl.InsertItem(_T(treeItem[1]), 0, 0);
treeCtrl.InsertItem(_T(treeItem[2]),0, 0);
treeCtrl.InsertItem(_T(treeItem[3]),0, 0);
HTREEITEM hroot01=treeCtrl.InsertItem(_T(treeItem[4]), 1, 1, hroot0);
treeCtrl.InsertItem(_T(treeItem[5]), 0, 0, hroot0);
for(int i=0; i<10; i++)
{
treeCtrl.InsertItem(_T(myClass[i]),
i, i, hroot01);
}
treeCtrl.Expand(hroot01,TVE_EXPAND);
treeCtrl.ShowWindow(SW_HIDE);
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// 动态创建最近联系人列表控件:
if(!m_List2.Create(LVS_SMALLICON | WS_TABSTOP
|WS_CHILD| WS_BORDER,
CRect(0, treey+rect0.Height(),
rect0.Width(), rect1.bottom+rect0.Height()),
this, ID_QQOTHERS))
{
MessageBox("QQ联系人或其它创建失败\n程序异常终止!");
return -1;
}
m_List2.SetImageList(&m_imagelist2, LVSIL_SMALL);
m_List2.ShowWindow(SW_HIDE);
//////////////////////////////////////////////////////////////////////////
// 显示随机的QQ好友
TopButtonNum=0; // 排在最顶上的按钮标识
clicknum=1; // 点击的按钮标识
isBigFace=true;
ChangeView();
//////////////////////////////////////////////////////////////////////////
DisplayInTask(); //显示到任务栏里面去;
Sleep(500);
OnOutline();
Sleep(500);
OnHidden();
Sleep(500);
OnOutline();
Sleep(500);
OnHidden();
SetTimer(1, 50, NULL);
//////////////////////////////////////////////////////////////////////////
// 上线代码
PlaySound("SYSTEM.WAV", AfxGetResourceHandle(),
SND_RESOURCE|SND_ASYNC|SND_NODEFAULT);
OnOnline();
return TRUE;
}
void CMyQQDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else if (nID==SC_MINIMIZE)
{
if(isMinimize)
{
// 移到右上面;
MoveWindow(GetSystemMetrics(SM_CXSCREEN)-dlgrect.Width()-20, 0,
dlgrect.Width(), dlgrect.Height(), true);
isMinimize=false;
}
else
{
CWnd* pRet = NULL ;
HWND hwnd = ::FindWindow("Shell_TrayWnd",NULL) ;
if(hwnd)
{
pRet = CWnd::FromHandle(hwnd) ;
}
CRect rect;
pRet->GetClientRect(&rect);
ClientToScreen(&rect);
CString str;
str.Format("%d", rect.Height());
MoveWindow(0, GetSystemMetrics(SM_CYSCREEN)-80,
dlgrect.Width(),
GetSystemMetrics(SM_CYCAPTION)+6, true);
isMinimize=true;
}
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
void CMyQQDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CMyQQDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CMyQQDlg::OnQqfriend()
{
PlaySound("folder.wav", AfxGetResourceHandle(),
SND_RESOURCE|SND_ASYNC|SND_NODEFAULT);
clicknum=1;
// TODO: Add your control notification handler code here
if(TopButtonNum==1)
{
return ;
}
ChangeView();
TopButtonNum=1;
}
void CMyQQDlg::ChangeView()
{
// 开始对按钮进行各个处理
if(TopButtonNum!=1&&clicknum==1)
{
//////////////////////////////////////////////////////////////////////////
// QQ好友不第一全按钮已经置于最上层
// 所以无需移动
// 其余全置于下面
m_QQothers.MoveWindow(0, rect1.bottom,
rect0.Width(), rect0.Height(), true);
m_QQqun.MoveWindow(0, rect1.bottom-rect1.Height(),
rect0.Width(), rect0.Height(), true);
//////////////////////////////////////////////////////////////////////////
// QQ好友
if(isBigFace)
{
m_List1.SetImageList(&m_imagelist2, LVSIL_SMALL);
}
else
{
m_List1.SetImageList(&m_imagelist1, LVSIL_SMALL);
}
m_List1.DeleteAllItems();
for(int i=1; i<11; i++)
{
// m_List1.InsertItem(0xffff,"", -1);
m_List1.InsertItem(0xffff,"\n"+myClass[i-1], i);
}
m_List1.InsertItem(0xffff,"", -1);
//////////////////////////////////////////////////////////////////////////
// 显示该栏目的下的QQ好友, 隐藏其它栏目;
m_List1.ShowWindow(SW_SHOW);
m_List2.ShowWindow(SW_HIDE);
treeCtrl.ShowWindow(SW_HIDE);
return;
}
if(TopButtonNum!=2&&clicknum==2)
{
// 先将排在它上面的按钮置上不闻;
m_QQqun.MoveWindow(0, rect0.bottom,
rect0.Width(), rect0.Height(), true);
// 将排在它后面的按钮置后;
m_QQothers.MoveWindow(0, rect1.bottom,
rect0.Width(), rect0.Height(), true);
// 显示该栏目的下的QQ群, 隐藏其它栏目;
m_List1.ShowWindow(SW_HIDE);
m_List2.ShowWindow(SW_HIDE);
treeCtrl.ShowWindow(SW_SHOW);
return;
}
//////////////////////////////////////////////////////////////////////////
//* ignoring these codes;
if(TopButtonNum!=3&&clicknum==3)
{
// 全部挤到上面去
m_QQfriend.MoveWindow(0, rect0.top,
rect0.Width(), rect0.Height(), true);
m_QQqun.MoveWindow(0, rect0.bottom,
rect0.Width(), rect0.Height(), true);
m_QQothers.MoveWindow(0, rect0.bottom+rect0.Height(),
rect0.Width(), rect0.Height(), true);
//////////////////////////////////////////////////////////////////////////
// 随机产生最近联系人
m_List2.DeleteAllItems();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -