www.pudn.com > VX.rar > MyBarLeft.cpp


// MyBarLeft.cpp : implementation file 
//  
// Copyright © 1998 Written by Kirk Stowell     
//		mailto:kstowel@sprynet.com  
//		http://www.geocities.com/SiliconValley/Haven/8230  
//  
// This code may be used in compiled form in any way you desire. This    
// file may be redistributed unmodified by any means PROVIDING it is     
// not sold for profit without the authors written consent, and     
// providing that this notice and the authors name and all copyright     
// notices remains intact. If the source code in this file is used in     
// any  commercial application then a statement along the lines of     
// "Portions Copyright © 1998 Kirk Stowell" must be included in     
// the startup banner, "About" box or printed documentation. An email     
// letting me know that you are using it would be nice as well. That's     
// not much to ask considering the amount of work that went into this.    
//    
// This file is provided "as is" with no expressed or implied warranty.    
// The author accepts no liability for any damage/loss of business that    
// this product may cause.    
//  
///////////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "MyBarLeft.h" 
#include "Resource.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CMyBarLeft 
 
CMyBarLeft::CMyBarLeft() 
{ 
	// TODO: add construction code here. 
} 
 
CMyBarLeft::~CMyBarLeft() 
{ 
	// TODO: add destruction code here. 
} 
 
#define IDC_TREE_CTRL 1000 
 
BEGIN_MESSAGE_MAP(CMyBarLeft, CCJControlBar) 
	//{{AFX_MSG_MAP(CMyBarLeft) 
	ON_WM_CREATE() 
	ON_WM_WINDOWPOSCHANGED() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CMyBarLeft message handlers 
 
static CString csTree[] = 
{ 
	_T("Root Tree Item"), 
	_T("Parent Tree Item"), 
	_T("Child Tree Item") 
}; 
 
int CMyBarLeft::OnCreate(LPCREATESTRUCT lpCreateStruct)  
{ 
	if (CCJControlBar::OnCreate(lpCreateStruct) == -1) 
		return -1; 
	 
	// TODO: Add your specialized creation code here 
	if (!m_TreeCtrl.Create (WS_CHILD | WS_VISIBLE | WS_TABSTOP | 
		TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT, 
		CRect(0,0,0,0), this, IDC_TREE_CTRL)) 
	{ 
		TRACE0("Failed to create view for CMyBarLeft\n"); 
		return -1; 
	} 
 
	m_TreeCtrl.ModifyStyleEx(0,WS_EX_CLIENTEDGE|WS_EX_DLGMODALFRAME); 
 
	// create the image list for the tree control 
	// and set the tree style using defaults 
	m_ImageList.Create (IDB_IL_FILE, 16, 1, RGB(0,128,128)); 
	m_TreeCtrl.SetImageList (&m_ImageList, TVSIL_NORMAL); 
 
	// add the parent item, make it bold 
	HTREEITEM htiParent = m_TreeCtrl.InsertItem(csTree[0]); 
	HTREEITEM htiChild; // child item 
 
	htiChild = m_TreeCtrl.InsertItem( csTree[1], 1, 1, htiParent, TVI_LAST ); 
	m_TreeCtrl.SetItemState( htiChild, TVIS_BOLD, TVIS_BOLD ); 
 
	// add the children of the parent item 
	for( int i = 1; i < 10; i++ ) { 
		m_TreeCtrl.InsertItem( csTree[2], 2, 3, htiChild, TVI_LAST ); 
	} 
 
	m_TreeCtrl.Expand(htiParent, TVE_EXPAND); 
	m_TreeCtrl.Expand(htiChild, TVE_EXPAND); 
 
	return 0; 
} 
 
void CMyBarLeft::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos)  
{ 
	CCJControlBar::OnWindowPosChanged(lpwndpos); 
	 
	// TODO: Add your message handler code here 
	if (IsFloating()) { 
		m_TreeCtrl.MoveWindow( 5, 5, lpwndpos->cx-10, lpwndpos->cy-10 ); 
	} 
 
	else if (IsHorzDocked()) { 
		m_TreeCtrl.MoveWindow( 17, 3, lpwndpos->cx-25, lpwndpos->cy-17 ); 
	} 
 
	else { 
		m_TreeCtrl.MoveWindow( 3, 17, lpwndpos->cx-17, lpwndpos->cy-30 ); 
	} 
}