⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 workspacebar.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
字号:
// WorkspaceBar.cpp : implementation of the CWorkspaceBar class
//

#include "stdafx.h"
#include "CVenus.h"
#include "WorkspaceBar.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CWorkspaceBar

BEGIN_MESSAGE_MAP(CWorkspaceBar, CBCGSizingControlBar)
	//{{AFX_MSG_MAP(CWorkspaceBar)
	ON_WM_CREATE()
	ON_WM_SIZE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CWorkspaceBar construction/destruction
CString CWorkspaceBar::csProjectTree[] =
{
	_T("工程"),
	_T("工艺初选"),					// 1	NoUse
	_T("自喷气水井节点分析"),		// 2
	// hss
	_T("自喷气水井动态分析"),		// 3
	_T("气举排水采气节点分析"),		// 4
	// hss
	_T("气举排水采气动态分析"),		// 5
	_T("气举排水采气优化设计"),		// 6
	_T("抽油机排水采气优化设计"),	// 7
	_T("电潜泵排水采气节点分析"),	// 8
	_T("电潜泵排水采气优化设计"),	// 9
	_T("射流泵排水采气节点分析"),	// 10
	// hss
	_T("射流泵排水采气动态分析"),	// 11
	_T("射流泵排水采气优化设计"),	// 12
	_T("气井连续排液临界流量"),		// 13
	_T("多相垂管流压力梯度"),		// 14
	_T("生产气井压力梯度"),			// 15
	_T("注气井压力梯度"),			// 16	NoUse
	_T("经济评价"),					// 17	NoUse
	_T("生产气井节点分析"),			// 18
	// hss
	_T("生产气井动态分析"),			// 19

	_T("凝析气井节点分析"),			// 20
	_T("柱塞气举举升分析"),			// 21
	_T("柱塞气举优化设计")			// 22

};

int	CWorkspaceBar::m_ItemCounter = sizeof(CWorkspaceBar::csProjectTree) / sizeof(CWorkspaceBar::csProjectTree[0]);

char	CWorkspaceBar::csOperatorTree[25][20] =
{
//	_T("操作"),
	_T("基本数据"),
	_T("新井"),
	_T("打开"),
	_T("保存"),
	_T("另存为"),
	_T("分析计算"),
	_T("同步"),
	_T("打印预览基本数据"),
	_T("打印基本数据"),


	_T("计算结果"),
	_T("显示计算结果"),
	_T("显示当前计算结果"),
	_T("保存当前计算结果"),
	_T("打印预览计算结果"),
	_T("打印计算结果"),

	_T("图形"),
	_T("显示图形"),
	_T("显示当前图形"),
	_T("保存当前图形"),
	_T("图形设置"),
	_T("保存为位图"),
	_T("上一个图"),
	_T("下一个图"),
	_T("打印预览图形"),
	_T("打印图形")
};

CWorkspaceBar::CWorkspaceBar()
{
	// TODO: add one-time construction code here

}

CWorkspaceBar::~CWorkspaceBar()
{
}

/////////////////////////////////////////////////////////////////////////////
// CWorkspaceBar message handlers

int CWorkspaceBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CBCGSizingControlBar::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	CRect rectDummy;
	rectDummy.SetRectEmpty ();

	// Create tabs window:
	if (!m_wndTabs.Create (CBCGTabWnd::STYLE_3D, rectDummy, this, 1))
	{
		TRACE0("Failed to create workspace tab window\n");
		return -1;      // fail to create
	}

	m_wndTabs.SetImageList (IDB_WORKSPACE, 16, RGB (255, 0, 255));

	// Create tree windows.
	// TODO: create your own tab windows here:
	const DWORD dwViewStyle =	WS_CHILD | WS_VISIBLE | TVS_HASLINES | 
								TVS_LINESATROOT | TVS_HASBUTTONS | TVS_SHOWSELALWAYS;
	
	if (!m_wndTree1.Create (dwViewStyle, rectDummy, &m_wndTabs, 2) ||
		!m_wndTree2.Create (dwViewStyle, rectDummy, &m_wndTabs, 3) ||
		!m_wndTree3.Create (dwViewStyle, rectDummy, &m_wndTabs, 4))
	{
		TRACE0("Failed to create workspace view\n");
		return -1;      // fail to create
	}
	// Setup trees content:
/*	HTREEITEM hRoot1 = m_wndTree1.InsertItem (_T("Root 1"));
	m_wndTree1.InsertItem (_T("Item 1"), hRoot1);
	m_wndTree1.InsertItem (_T("Item 2"), hRoot1);

	HTREEITEM hRoot2 = m_wndTree2.InsertItem (_T("Root 2"));
	m_wndTree2.InsertItem (_T("Item 1"), hRoot2);
	m_wndTree2.InsertItem (_T("Item 2"), hRoot2);
*/
	{
		UINT  ID[21];
		
		ID[0]  = IDI_ICON_PROJECT;
		ID[1]  = IDI_NEW2;
		ID[2]  = IDI_NEW3;
		ID[3]  = IDI_NEW18;
		ID[4]  = IDI_NEW4;
		ID[5]  = IDI_NEW19;
		ID[6]  = IDI_NEW5;
		ID[7]  = IDI_NEW6;
		ID[8]  = IDI_NEW7;
		ID[9]  = IDI_NEW8;
		ID[10] = IDI_NEW20;
		ID[11] = IDI_NEW9;
		ID[12] = IDI_NEW10;
		ID[13] = IDI_NEW11;
		ID[14] = IDI_NEW12;
		ID[15] = IDI_NEW13;
		ID[16] = IDI_NEW14;
		// hss
		ID[17] = IDI_NEW15;
		ID[18] = IDI_NEW16;
		ID[19] = IDI_NEW21;
		ID[20] = IDI_NEW17;
		

		m_ImageList1.Create(16, 16, TRUE, 27, 0);
		
		HICON hIcon;

		// hss
//		for(int i = 0; i < 17; i++)
		for(int i = 0; i < 21; i++)
		{
			hIcon = ::LoadIcon (AfxGetResourceHandle(),
				MAKEINTRESOURCE(ID[i]));
			m_ImageList1.Add(hIcon);
		}
		
		m_wndTree1.SetImageList (&m_ImageList1, TVSIL_NORMAL);
		
		HTREEITEM htItem = m_wndTree1.InsertItem(csProjectTree[0]);
		
//		m_wndTree1.SetItemState( htItem, TVIS_BOLD, TVIS_BOLD );
		
		// hss
		//for(i = 2; i < 13; i++) 
		for(i = 2; i < 15; i++) 
		{
			//		m_TreeCtrl.InsertItem (csProjectTree[i], i, i, htItem, TVI_LAST);
			m_wndTree1.InsertItem (csProjectTree[i], i-1, i-1, htItem, TVI_LAST);
		}

		// hss
//		for(i = 15; i < 19; i++) 
		for(i = 15; i < 23; i++) 
		{
			//		m_TreeCtrl.InsertItem (csProjectTree[i], i, i, htItem, TVI_LAST);
			m_wndTree1.InsertItem (csProjectTree[i], i-3, i-3, htItem, TVI_LAST);
		}
		
		
		//	m_TreeCtrl.Expand(htItem, TVE_EXPAND);
		m_wndTree1.Expand(htItem, TVE_EXPAND);
	}

	{
		UINT  ID[25];
		
		ID[0]  = IDI_ICON_BASE;
		ID[1]  = IDI_ICON_NEW;
		ID[2]  = IDI_ICON_OPEN;
		ID[3]  = IDI_ICON_SAVE;
		ID[4]  = IDI_ICON_SAVE;
		ID[5]  = IDI_ICON_CALC;
		ID[6]  = IDI_ICON_SYN;
		ID[7]  = IDI_ICON_PREVIEW;
		ID[8]  = IDI_ICON_PRINT;
		ID[9] = IDI_ICON_DESIGN;
		ID[10] = IDI_ICON_RESULT;
		ID[11] = IDI_NEW16;
		ID[12] = IDI_ICON_SAVE;
		ID[13] = IDI_ICON_PREVIEW;
		ID[14] = IDI_ICON_PRINT;
		ID[15] = IDI_GRAPH2;
		ID[16] = IDI_ICON_GRAPH;
		ID[17] = IDI_GRAPH3;
		ID[18] = IDI_ICON_SAVE;
		ID[19] = IDI_GRAPH4;
		ID[20] = IDI_ICON_BITMAP;
		ID[21] = IDI_ICON_PREV;
		ID[22] = IDI_ICON_NEXT;
		ID[23] = IDI_ICON_PREVIEW;
		ID[24] = IDI_ICON_PRINT;
		
		// Create the Image List.
		m_ImageList2.Create(16, 16, TRUE, 27, 0);
		
		HICON hIcon;
		for(int i = 0; i < 25; i++)
		{
			hIcon = ::LoadIcon(AfxGetResourceHandle(),
				MAKEINTRESOURCE(ID[i]));
			m_ImageList2.Add(hIcon);
		}
		
		m_wndTree2.SetImageList (&m_ImageList2, TVSIL_NORMAL);
		
		TV_INSERTSTRUCT TreeCtrlItem1;  
		TreeCtrlItem1.item.pszText = csOperatorTree[0];
		TreeCtrlItem1.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE| TVIF_PARAM;
		TreeCtrlItem1.item.iImage = 0;
		TreeCtrlItem1.item.iSelectedImage = 0;
		TreeCtrlItem1.item.lParam = 0;
		TreeCtrlItem1.hParent = TVI_ROOT;
		TreeCtrlItem1.hInsertAfter = TVI_LAST;
		HTREEITEM hTreeItem0 = m_wndTree2.InsertItem(&TreeCtrlItem1);
		
		for(i = 1; i < 9; i++)
		{
			TreeCtrlItem1.hParent = hTreeItem0;
			TreeCtrlItem1.item.pszText = csOperatorTree[i];
			TreeCtrlItem1.item.lParam = i ;
			TreeCtrlItem1.item.iImage = i ;
			TreeCtrlItem1.item.iSelectedImage = i ;
			m_wndTree2.InsertItem(&TreeCtrlItem1);
		}
		
		TreeCtrlItem1.hParent = TVI_ROOT; 
		TreeCtrlItem1.item.pszText = csOperatorTree[9];
		TreeCtrlItem1.item.lParam = 9;
		TreeCtrlItem1.item.iImage = 9;
		TreeCtrlItem1.item.iSelectedImage = 9;
		HTREEITEM hTreeItem1 = m_wndTree2.InsertItem(&TreeCtrlItem1);
		
		for(i = 10; i < 15; i++)
		{
			TreeCtrlItem1.hParent = hTreeItem1;
			TreeCtrlItem1.item.pszText = csOperatorTree[i];
			TreeCtrlItem1.item.lParam = i ;
			TreeCtrlItem1.item.iImage = i ;
			TreeCtrlItem1.item.iSelectedImage = i ;
			m_wndTree2.InsertItem(&TreeCtrlItem1);
		}
		
		TreeCtrlItem1.hParent = TVI_ROOT; 
		TreeCtrlItem1.item.pszText = csOperatorTree[15];
		TreeCtrlItem1.item.lParam = 15;
		TreeCtrlItem1.item.iImage = 15;
		TreeCtrlItem1.item.iSelectedImage = 15;
		HTREEITEM hTreeItem2 = m_wndTree2.InsertItem(&TreeCtrlItem1);
		
		for(i = 16; i < 25; i++)
		{
			TreeCtrlItem1.hParent = hTreeItem2;
			TreeCtrlItem1.item.pszText = csOperatorTree[i];
			TreeCtrlItem1.item.lParam = i ;
			TreeCtrlItem1.item.iImage = i ;
			TreeCtrlItem1.item.iSelectedImage = i ;
			m_wndTree2.InsertItem(&TreeCtrlItem1);
		}
		
		m_wndTree2.Expand(hTreeItem0, TVE_EXPAND);
		m_wndTree2.Expand(hTreeItem1, TVE_EXPAND);
		m_wndTree2.Expand(hTreeItem2, TVE_EXPAND);
	
		// next for m_wndTree3
		m_wndTree3.SetImageList (&m_ImageList2, TVSIL_NORMAL);
		
		TreeCtrlItem1.item.pszText = csOperatorTree[0];
		TreeCtrlItem1.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE| TVIF_PARAM;
		TreeCtrlItem1.item.iImage = 0;
		TreeCtrlItem1.item.iSelectedImage = 0;
		TreeCtrlItem1.item.lParam = 0;
		TreeCtrlItem1.hParent = TVI_ROOT;
		TreeCtrlItem1.hInsertAfter = TVI_LAST;
		hTreeItem0 = m_wndTree3.InsertItem(&TreeCtrlItem1);
		
		for(i = 1; i < 9; i++)
		{
			TreeCtrlItem1.hParent = hTreeItem0;
			TreeCtrlItem1.item.pszText = csOperatorTree[i];
			TreeCtrlItem1.item.lParam = i ;
			TreeCtrlItem1.item.iImage = i ;
			TreeCtrlItem1.item.iSelectedImage = i ;
			m_wndTree3.InsertItem(&TreeCtrlItem1);
		}
		
		TreeCtrlItem1.hParent = TVI_ROOT; 
		TreeCtrlItem1.item.pszText = csOperatorTree[9];
		TreeCtrlItem1.item.lParam = 9;
		TreeCtrlItem1.item.iImage = 9;
		TreeCtrlItem1.item.iSelectedImage = 9;
		hTreeItem1 = m_wndTree3.InsertItem(&TreeCtrlItem1);
		
		for(i = 10; i < 15; i++)
		{
			TreeCtrlItem1.hParent = hTreeItem1;
			TreeCtrlItem1.item.pszText = csOperatorTree[i];
			TreeCtrlItem1.item.lParam = i ;
			TreeCtrlItem1.item.iImage = i ;
			TreeCtrlItem1.item.iSelectedImage = i ;
			m_wndTree3.InsertItem(&TreeCtrlItem1);
		}
		
		m_wndTree3.Expand(hTreeItem0, TVE_EXPAND);
		m_wndTree3.Expand(hTreeItem1, TVE_EXPAND);
		
	}
	// Attach tree windows to tab:
	m_wndTabs.AddTab (&m_wndTree1, _T("选择工程"), 0 /* Image number */);
//	m_wndTabs.AddTab (&m_wndTree2, _T("操作功能"), 1 /* Image number */);

	return 0;
}

void CWorkspaceBar::OnSize(UINT nType, int cx, int cy) 
{
	CBCGSizingControlBar::OnSize(nType, cx, cy);

	// Tab control should cover a whole client area:
	m_wndTabs.SetWindowPos (NULL, -1, -1, cx, cy,
		SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);
}


void CWorkspaceBar::UpdateSelected()
{
	LockWindowUpdate();
	RemoveAllTree();
	if(((CCVenusApp*)AfxGetApp())->IsHaveGraph())
	{
		m_wndTabs.AddTab (&m_wndTree1, _T("选择工程"), 0 /* Image number */);
		m_wndTabs.AddTab (&m_wndTree2, _T("操作功能"), 1 /* Image number */);
	}
	else
	{
		m_wndTabs.AddTab (&m_wndTree1, _T("选择工程"), 0 /* Image number */);
		m_wndTabs.AddTab (&m_wndTree3, _T("操作功能"), 1 /* Image number */);
	}
	BYTE	btCurProject = ((CCVenusApp*)AfxGetApp())->m_btProjectType;
//	HTREEITEM hTreeItem1 = m_wndTree1.GetSelectedItem();
//	m_wndTree1.SetItemState( hTreeItem1, TVIS_SELECTED, TVIS_SELECTED );
	HTREEITEM htItem = m_wndTree1.GetRootItem();
	m_wndTree1.SetItemState( htItem, !TVIS_SELECTED, TVIS_SELECTED );

	HTREEITEM hTreeItem1;
	hTreeItem1 = m_wndTree1.GetChildItem(htItem);
	m_wndTree1.SetItemState( hTreeItem1, !TVIS_SELECTED, TVIS_SELECTED );
	for(UINT	k=2; k<m_wndTree1.GetCount(); k++)
	{
		hTreeItem1 = m_wndTree1.GetNextItem(hTreeItem1,TVGN_NEXT);
		m_wndTree1.SetItemState( hTreeItem1, !TVIS_SELECTED, TVIS_SELECTED );
	}
	HTREEITEM htItemTemp;
	htItemTemp = m_wndTree1.GetChildItem(htItem);
//	if(btCurProject>16)
//		btCurProject -= 1;
//	if(btCurProject>14)
//	hss
//	if(btCurProject>15)
	if(btCurProject> 22)
		btCurProject -= 2;
	for(byte i=2; i<btCurProject; i++)
		htItemTemp = m_wndTree1.GetNextItem(htItemTemp,TVGN_NEXT);
	
	m_wndTree1.SetItemState( htItemTemp, TVIS_SELECTED, TVIS_SELECTED );
	UnlockWindowUpdate();

}

void CWorkspaceBar::RemoveAllTree()
{
	m_wndTabs.RemoveAllTabs();
	m_wndTree1.ShowWindow(SW_HIDE);
	m_wndTree2.ShowWindow(SW_HIDE);
	m_wndTree3.ShowWindow(SW_HIDE);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -