📄 workspacebar.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 + -