?? treectrlusedlg.cpp
字號:
// TreeCtrlUseDlg.cpp : implementation file
//
#include "stdafx.h"
#include "TreeCtrlUse.h"
#include "TreeCtrlUseDlg.h"
#include "TreeAttrDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTreeCtrlUseDlg dialog
CTreeCtrlUseDlg::CTreeCtrlUseDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTreeCtrlUseDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTreeCtrlUseDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CTreeCtrlUseDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTreeCtrlUseDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTreeCtrlUseDlg, CDialog)
//{{AFX_MSG_MAP(CTreeCtrlUseDlg)
ON_WM_DESTROY()
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE, OnSelchangedTree)
ON_BN_CLICKED(IDC_BTNSET, OnBtnset)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTreeCtrlUseDlg message handlers
BOOL CTreeCtrlUseDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CenterWindow(GetDesktopWindow()); // center to the hpc screen
//創(chuàng)建圖片列表對象
m_pImgList = new CImageList();
m_pImgList->Create(24,16,TRUE,12,4);
//將預(yù)先定義好的兩幅位圖加載到圖片列表中
CBitmap bmp;
bmp.LoadBitmap(IDB_BMPTREE);
m_pImgList->Add(&bmp, (COLORREF)0xFFFFFF);
bmp.DeleteObject();
bmp.LoadBitmap(IDB_BMPTREESELECTED);
m_pImgList->Add(&bmp, (COLORREF)0xFFFFFF);
bmp.DeleteObject();
//初始化樹
InitTree();
return TRUE; // return TRUE unless you set the focus to a control
}
void CTreeCtrlUseDlg::OnDestroy()
{
CDialog::OnDestroy();
//釋放創(chuàng)建的圖片列表視圖
delete m_pImgList;
}
//初始化樹,這里主要用來加載樹
void CTreeCtrlUseDlg::InitTree()
{
TCHAR *szTree[4][3]={{_T("江蘇"),_T("南京"),_T("蘇州")}
,{_T("河南"),_T("鄭州"),_T("商丘")}
,{_T("浙江"),_T("杭州"),_T("溫州")}
,{_T("廣東"),_T("廣州"),_T("深圳")}};
CTreeCtrl* pCtrl = (CTreeCtrl*) GetDlgItem(IDC_TREE);
ASSERT(pCtrl != NULL);
pCtrl->SetImageList(m_pImgList,TVSIL_NORMAL);
//先來添加樹的根節(jié)點
TVINSERTSTRUCT tvInsert;
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.iImage = 0;
tvInsert.item.iSelectedImage = 1;
tvInsert.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
tvInsert.item.pszText = _T("中國");
HTREEITEM hCountry = pCtrl->InsertItem(&tvInsert);
HTREEITEM hSecItem;
//添加省以及城市,在“中國”節(jié)點下
for (int i=0;i<4;i++)
{
hSecItem = pCtrl->InsertItem( TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT,
szTree[i][0], 0, 1, 0, 0, 0, hCountry, NULL);
pCtrl->InsertItem( TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT,
szTree[i][1], 0, 1, 0, 0, 0, hSecItem, NULL);
pCtrl->InsertItem( TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT,
szTree[i][2], 0, 1, 0, 0, 0, hSecItem, NULL);
}
}
void CTreeCtrlUseDlg::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
CTreeCtrl* pCtrl = (CTreeCtrl*) GetDlgItem(IDC_TREE);
ASSERT(pCtrl != NULL);
//在狀態(tài)欄上顯示所選中樹葉的標(biāo)題
CStatic *pLblStatus = (CStatic*)GetDlgItem(IDC_STATUS);
pLblStatus->SetWindowText(pCtrl->GetItemText(pCtrl->GetSelectedItem()));
*pResult = 0;
}
//設(shè)置樹的某個屬性
void CTreeCtrlUseDlg::SetNewStyle(long lStyleMask, BOOL bSetBits)
{
CTreeCtrl* pCtrl = (CTreeCtrl*) GetDlgItem(IDC_TREE);
ASSERT(pCtrl != NULL);
long lStyleOld;
lStyleOld = GetWindowLong(pCtrl->m_hWnd, GWL_STYLE);
lStyleOld &= ~lStyleMask;
if (bSetBits)
lStyleOld |= lStyleMask;
SetWindowLong(pCtrl->m_hWnd, GWL_STYLE, lStyleOld);
pCtrl->SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER);
}
//設(shè)置樹樣式
void CTreeCtrlUseDlg::SetTreeCtrlStyle()
{
CTreeCtrl* pCtrl = (CTreeCtrl*) GetDlgItem(IDC_TREE);
ASSERT(pCtrl != NULL);
SetNewStyle(TVS_EDITLABELS, m_bEditLabels);
SetNewStyle(TVS_HASBUTTONS, m_bHasButtons);
SetNewStyle(TVS_HASLINES, m_bHasLines);
SetNewStyle(TVS_LINESATROOT, m_bLinesAtRoot);
SetNewStyle(TVS_SHOWSELALWAYS, m_bShowSelAlways);
}
void CTreeCtrlUseDlg::OnBtnset()
{
CTreeAttrDlg *g_ptreeCtrlDlg = new CTreeAttrDlg;
g_ptreeCtrlDlg->m_bEditLabels = m_bEditLabels;
g_ptreeCtrlDlg->m_bHasButtons = m_bHasButtons;
g_ptreeCtrlDlg->m_bHasLines = m_bHasLines;
g_ptreeCtrlDlg->m_bLinesAtRoot = m_bLinesAtRoot;
g_ptreeCtrlDlg->m_bShowSelAlways = m_bShowSelAlways;
//打開屬性設(shè)置窗口
if(g_ptreeCtrlDlg->DoModal() == IDOK)
{
m_bEditLabels = g_ptreeCtrlDlg->m_bEditLabels;
m_bHasButtons = g_ptreeCtrlDlg->m_bHasButtons;
m_bHasLines = g_ptreeCtrlDlg->m_bHasLines;
m_bLinesAtRoot = g_ptreeCtrlDlg->m_bLinesAtRoot;
m_bShowSelAlways = g_ptreeCtrlDlg->m_bShowSelAlways;
SetTreeCtrlStyle();
}
delete g_ptreeCtrlDlg;
g_ptreeCtrlDlg=NULL;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -