📄 tabadlg.cpp
字号:
// TabADlg.cpp : implementation file
//
#include "stdafx.h"
#include "BeautyQQ.h"
#include "TabADlg.h"
#include "TalkDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//define a ID-MACRO for message loop .....
#define IDC_TREE1 (WM_USER+1)
#define IDC_GROUP (WM_USER+2)
/////////////////////////////////////////////////////////////////////////////
// CTabADlg dialog
CTabADlg::CTabADlg(CWnd* pParent /*=NULL*/)
: CDialog(CTabADlg::IDD, pParent)
{
m_pGroups = NULL;
}
void CTabADlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTabADlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTabADlg, CDialog)
//{{AFX_MSG_MAP(CTabADlg)
ON_WM_SIZE()
ON_MESSAGE(WM_GROUPCTRL_RBUTTONUP, OnGroupRDown)
ON_NOTIFY(NM_DBLCLK, IDC_TREE1, OnNodeLDBDown)
ON_NOTIFY(NM_CLICK, IDC_TREE1, OnNodeLDown)
ON_NOTIFY(NM_CLICK, IDC_GROUP, OnGroupRDown)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTabADlg message handlers
void CTabADlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
//update the window position of the Ctrls
GetClientRect(&m_rtClient);
if (m_pGroups && IsWindow(m_pGroups->GetSafeHwnd()))
{
m_pGroups->MoveWindow(&m_rtClient);
}
}
BOOL CTabADlg::OnInitDialog()
{
CDialog::OnInitDialog();
//Initial all the Contrls before show.
InitialCtrl();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//
////Initial all the Contrls before show.
//
void CTabADlg::InitialCtrl(void)
{
// group creat
m_pGroups = new CBeautyGroupCtrlEx;
m_pGroups->Create( _T("GroupCtrl"), WS_VISIBLE | WS_CHILD,
CRect(0, 0, 0, 0), this, IDC_GROUP);
//icon dynamic load from file
CString strName,strPath,strFilename;
CBitmap bmpl,bmpld,bmp1,bmp2,bmp3,bmp4,bmp5,bmp6,bmp7;
strPath = GetModulePath();
strName = strPath +"\\skin\\1.bmp";
bmpl.Attach((HBITMAP)LoadImage(NULL, strName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
strName = strPath +"\\skin\\2.bmp";
bmpld.Attach((HBITMAP)LoadImage(NULL, strName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
strName = strPath +"\\skin\\user1.bmp";
bmp1.Attach((HBITMAP)LoadImage(NULL, strName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
strName = strPath +"\\skin\\user2.bmp";
bmp2.Attach((HBITMAP)LoadImage(NULL, strName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
strName = strPath +"\\skin\\user3.bmp";
bmp3.Attach((HBITMAP)LoadImage(NULL, strName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
strName = strPath +"\\skin\\user4.bmp";
bmp4.Attach((HBITMAP)LoadImage(NULL, strName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
strName = strPath +"\\skin\\user5.bmp";
bmp5.Attach((HBITMAP)LoadImage(NULL, strName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
strName = strPath +"\\skin\\user6.bmp";
bmp6.Attach((HBITMAP)LoadImage(NULL, strName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
strName = strPath +"\\skin\\user7.bmp";
bmp7.Attach((HBITMAP)LoadImage(NULL, strName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
m_imagelistBmp.Create(30,30,ILC_COLOR32,10,10);
m_imagelistBmp.SetBkColor(RGB(255,255,255));
m_imagelistBmp.Add(&bmpl, RGB(0, 0, 0));
m_imagelistBmp.Add(&bmpld, RGB(0, 0, 0));
m_imagelistBmp.Add(&bmp1, RGB(0, 0, 0));
m_imagelistBmp.Add(&bmp2, RGB(0, 0, 0));
m_imagelistBmp.Add(&bmp3, RGB(0, 0, 0));
m_imagelistBmp.Add(&bmp4, RGB(0, 0, 0));
m_imagelistBmp.Add(&bmp5, RGB(0, 0, 0));
m_imagelistBmp.Add(&bmp6, RGB(0, 0, 0));
m_imagelistBmp.Add(&bmp7, RGB(0, 0, 0));
/*
// not use now, but we could use icon style or bmp style
HICON hIcon1, hIcon2,hIcon3;
strPath = GetModulePath();
strName = strPath +"\\skin\\tree_norm.ico";
hIcon1 = (HICON)LoadImage(NULL, strName, IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
strName = strPath +"\\skin\\tree_sel.ico";
hIcon2 = (HICON)LoadImage(NULL, strName, IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
strName = strPath +"\\skin\\sys.ico";
hIcon3 = (HICON)LoadImage(NULL, strName, IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
//image-list creat
m_imagelist.Create(16,16,ILC_COLOR32,10,10);
m_imagelist.SetBkColor(RGB(255,255,255));
m_imagelist.Add(hIcon1);
m_imagelist.Add(hIcon2);
m_imagelist.Add(hIcon3);
*/
//tree creat and initial
HTREEITEM hParent = NULL;
m_tree1.Create(WS_VISIBLE | WS_CHILD ,CRect(0, 0, 0, 0), m_pGroups, IDC_TREE1);
m_tree1.SetImageList(&m_imagelistBmp,TVSIL_NORMAL);
m_tree1.ShowWindow(false);
CString strFriendName;
hParent = m_tree1.InsertItem(_T("同事(3/20)"),0,1);
for(int i = 0; i<7; i++)
{
strFriendName.Format(_T("同事 %d "),i);
m_tree1.InsertItem(strFriendName,(i+2)%9,(i+2)%9,hParent);
}
hParent = m_tree1.InsertItem(_T("好友(5/10)"),0,1);
for(i = 0; i<7; i++)
{
strFriendName.Format(_T("好友 %d "),i);
m_tree1.InsertItem(strFriendName,(i+2)%9,(i+2)%9,hParent);
}
hParent = m_tree1.InsertItem(_T("其他(1/3) "),0,1);
m_tree1.InsertItem(_T("Hunter&Hacker "),2,2,hParent);
m_tree1.InsertItem(_T("D-Link "),3,3,hParent);
m_tree1.InsertItem(_T("L.J-Wang "),4,4,hParent);
//group initial -- add child
m_pGroups->AddOneGroup(_T("联系人"), &m_tree1);
m_pGroups->AddOneGroup(_T("最近联系人"), NULL);
m_pGroups->AddOneGroup(_T("自定义组"), NULL);
m_pGroups->AddOneGroup(_T("讨论组"), NULL);
m_pGroups->ShowWindow(true);
}
//
// Notify Message Solving..
//
//Group Right Button Down
void CTabADlg::OnGroupRDown(WPARAM wParam, LPARAM lParam)
{
AfxMessageBox(_T("group right button down"));
}
//Tree node left button double click
void CTabADlg::OnNodeLDBDown(NMHDR* pNMHDR, LRESULT* pResult)
{
HTREEITEM hItem = m_tree1.GetSelectedItem();
if ((hItem != NULL) &&
!m_tree1.ItemHasChildren(hItem))
{//pop-up talk-dialog
CTalkDlg talkDlg;
talkDlg.DoModal();
}
}
//Tree node left button click
void CTabADlg::OnNodeLDown(WPARAM wParam, LPARAM lParam)
{
//make sure left button could also expand the node
CPoint pt;
GetCursorPos(&pt);
m_tree1.ScreenToClient(&pt);
HTREEITEM hItem = m_tree1.HitTest(pt);
if ((hItem != NULL)&& m_tree1.ItemHasChildren(hItem))
{
m_tree1.Expand(hItem, TVE_TOGGLE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -