📄 filebar.cpp
字号:
// FileBar.cpp : implementation file
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Client.h"
#include "FileBar.h"
#include "Resource.h"
//#include "table.h"
//#include "MSLDoc.h"
#include "ClientDoc.h"
#include "Msg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CClientApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CFileBar
CFileBar::CFileBar()
{
}
CFileBar::~CFileBar()
{
}
#define IDC_TREE_CTRL 1000
BEGIN_MESSAGE_MAP(CFileBar, CControlBar)
//{{AFX_MSG_MAP(CFileBar)
ON_NOTIFY_REFLECT(TVN_ITEMEXPANDING, OnItemexpanding)
ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnSelchanged)
ON_WM_CREATE()
ON_WM_WINDOWPOSCHANGED()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFileBar message handlers
int CFileBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CControlBar::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
if( !m_TreeCtrl.Create(WS_CHILD | WS_VISIBLE | WS_THICKFRAME | TVS_HASBUTTONS |
TVS_HASLINES | TVS_LINESATROOT, CRect(0,0,0,0), this ,IDC_TREE_CTRL) )
{
TRACE0("Failed to create view for CFileBar\n");
return -1;
}
////////////////////////////////////////////////////////////////
m_TreeCtrl.SetMenuID(IDR_POPUP);
m_TreeCtrl.ModifyStyleEx(0, WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE);
m_ImageList.Create (IDB_IMAGE_FILE, 16, 1, RGB(0,255,0));
m_TreeCtrl.SetImageList (&m_ImageList, TVSIL_NORMAL);
//Construct the trees____
hitem0 = m_TreeCtrl.InsertItem( "MiniSQL关系库", 3, 3 );
m_TreeCtrl.SetItemState( hitem0, TVIS_BOLD, TVIS_BOLD );
return 0;
}
void CFileBar::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 );
}
}
BOOL CFileBar::add_item( CString& tname )
{
int flag=0;
POSITION pos = item_list.GetHeadPosition();
while( pos )
{
if( item_list.GetNext( pos ) == tname )
{
flag = 1;
break;
}
}
if(flag)
return FALSE;
else
{
item_list.AddTail( tname );
return TRUE;
}
}
void CFileBar::insert_tree( CString& tname, HTREEITEM hitem)
{
if( add_item( tname ) )
m_TreeCtrl.InsertItem( tname, 4, 4, hitem, TVI_LAST );
}
void CFileBar::OnItemexpanding(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
}
void CFileBar::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
}
void CFileBar::ExpandTree()
{
m_TreeCtrl.Expand (hitem0, TVE_EXPAND);
}
void CFileBar::ViewDb()
{
HTREEITEM hItem = m_TreeCtrl.GetSelectedItem();
CString name = m_TreeCtrl.GetItemText( hItem );
CString cmd( "select * from " );
cmd += name + ";";
CMsg msg( COMMAND );
msg.m_msgList.AddTail( cmd );
theApp.SendMsg( msg );
CClientDoc* pDoc = NULL;
theApp.m_ClientDocList.AddTail( pDoc );
}
void CFileBar::DelFile(const CString &fname)
{
POSITION pos = item_list.GetHeadPosition();
POSITION old;
bool flag = false;
while( pos )
{
old = pos;
CString temp = item_list.GetNext( pos );
if( temp == fname )
{
item_list.RemoveAt( old );
flag = true;
break;
}
}
if( !flag )
return ;
HTREEITEM hItem;
hItem = m_TreeCtrl.GetNextItem( hitem0, TVGN_CHILD );
if( hItem )
{
if( m_TreeCtrl.GetItemText( hItem ) == fname )
{
m_TreeCtrl.DeleteItem( hItem );
return ;
}
while( hItem = m_TreeCtrl.GetNextItem( hItem, TVGN_NEXT ) )
if( m_TreeCtrl.GetItemText( hItem ) == fname )
{
m_TreeCtrl.DeleteItem( hItem );
return ;
}
}
}
void CFileBar::Expanding()
{
HTREEITEM hItem = m_TreeCtrl.GetSelectedItem();
if( m_TreeCtrl.ItemHasChildren( hItem ) )
return ;
CString tname = m_TreeCtrl.GetItemText( hItem );
theApp.m_treeList.AddTail( hItem );
CMsg msg( FILEBAR_EXPAND );
msg.m_msgList.AddTail( tname );
theApp.SendMsg( msg );
}
void CFileBar::InsertAttr( CString& attr, HTREEITEM hItem )
{
m_TreeCtrl.InsertItem( attr, 5, 5, hItem, TVI_LAST );
}
void CFileBar::InsertIndex( CString& index, HTREEITEM hItem )
{
m_TreeCtrl.InsertItem( index, 6, 6, hItem, TVI_LAST );
}
void CFileBar::InsertIndex( LPCTSTR tname, LPCTSTR iname )
{
HTREEITEM hItem;
hItem = m_TreeCtrl.GetNextItem( hitem0, TVGN_CHILD );
if( hItem )
{
if( m_TreeCtrl.GetItemText( hItem ) == tname )
;
else
while( hItem = m_TreeCtrl.GetNextItem( hItem, TVGN_NEXT ) )
if( m_TreeCtrl.GetItemText( hItem ) == tname )
break;
}
if( m_TreeCtrl.ItemHasChildren( hItem ) )
{
CString str( _T("index:") );
str += iname;
m_TreeCtrl.InsertItem( str, 6, 6, hItem, TVI_LAST );
}
}
void CFileBar::DropIndex( LPCTSTR tname, LPCTSTR iname )
{
HTREEITEM hItem;
hItem = m_TreeCtrl.GetNextItem( hitem0, TVGN_CHILD );
if( hItem )
{
if( m_TreeCtrl.GetItemText( hItem ) == tname )
;
else
while( hItem = m_TreeCtrl.GetNextItem( hItem, TVGN_NEXT ) )
if( m_TreeCtrl.GetItemText( hItem ) == tname )
break;
}
CString text( _T("index:") );
text += iname;
if( m_TreeCtrl.ItemHasChildren( hItem ) )
{
hItem = m_TreeCtrl.GetNextItem( hItem, TVGN_CHILD );
if( m_TreeCtrl.GetItemText( hItem ) == text )
{
m_TreeCtrl.DeleteItem( hItem );
return;
}
while( hItem = m_TreeCtrl.GetNextItem( hItem, TVGN_NEXT ) )
if( m_TreeCtrl.GetItemText( hItem ) == text )
{
m_TreeCtrl.DeleteItem( hItem );
return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -