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

📄 rpttemplate.cpp

📁 超声影像工作站系统可与各种型号的B超、彩超连接
💻 CPP
字号:
// RptTemplate.cpp : implementation file
//

#include "stdafx.h"
#include "bxt.h"
#include "RptTemplate.h"

#include "bxtdlg.h"

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


RptTemplate::RptTemplate(CWnd* pParent /*=NULL*/)
	: CDialog(RptTemplate::IDD, pParent)
{
	//{{AFX_DATA_INIT(RptTemplate)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void RptTemplate::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(RptTemplate)
	DDX_Control(pDX, IDC_TREE1, m_tree);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(RptTemplate, CDialog)
	//{{AFX_MSG_MAP(RptTemplate)
	ON_NOTIFY(TVN_ITEMEXPANDED, IDC_TREE1, OnItemexpandedTree1)
	ON_NOTIFY(NM_DBLCLK, IDC_TREE1, OnDblclkTree1)
	ON_BN_CLICKED(IDC_BUTTON_CHOOSETEMPLATE, OnButtonChoosetemplate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// RptTemplate message handlers

BOOL RptTemplate::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	ImageList.Create(IDB_TEMPLATE, 13, 1, RGB(255,255,255) );
    m_tree.SetImageList( &ImageList, TVSIL_NORMAL );
	ReadTemplate();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void RptTemplate::ReadTemplate()
{
	FILE *fp = fopen("c:\\bxx\\config.txt","r");
	char textline[510];
	CString cs,num,c,msg;
	int level,lastlevel=100,i,linenum;
	DWORD id;

	if (!fp)
	{
		AfxMessageBox("Error!");
		return;
	}

	// Clear tree
	m_tree.DeleteAllItems();

	// Init
	for (i=0;i<10;i++)	pt[i] = TVI_ROOT;

	// Read from file
	linenum=0;
	while (fgets(textline,200,fp))
	{
		linenum++;
		cs = textline;
		cs.TrimLeft();
		cs.TrimRight();

		
		// Get Level
		level = -1;
		for(i=0,num="";i<cs.GetLength();i++)
		{
			c=cs.Mid(i,1);
			if (c >= "0" && c <= "9") num += c;
			else 
			{
				if (num.GetLength() > 0)	level = atoi(num);
				cs = cs.Mid(i);
				cs.TrimLeft();
				break;
			}
		}

		// Get ID if leafage Node
		id = -1;
		if (cs.Mid(0,1) == "(")
		{
			cs = cs.Mid(1);
			cs.TrimLeft();
			for (i=0,num="";i<cs.GetLength();i++)
			{
				c=cs.Mid(i,1);
				if (c>="0" && c<="9") num += c;
				else
				{
					if (num.GetLength() > 0) id = atoi(num);
					cs = cs.Mid(i);
					cs.TrimLeft();
					if (cs.Mid(0,1) != ")")
					{
						level = -1;
						break;
					}
					cs = cs.Mid(1);
					cs.TrimLeft();
					break;
				}
			}
		}

		if (level < 0)
		{
			// Not Valid
		}
		else if (level >= 19)
		{
			// Error!
		}
		else
		{
			if (level < lastlevel)
			{
				lastlevel = level;
				// OK
			}
			else if (level == lastlevel)
			{
				// Brother
			}
			else
			{
				if (level - lastlevel != 1)
				{
					// Error
					msg = "文件内容出现错误!\r\n出错行为第 ";
					msg += itoa(linenum,buf,10);
					msg += " 行。";
					AfxMessageBox(msg);
				}
			}
			lastlevel = level;

			if (id == -1)	// Leafage Node
			{
				
				pt[level+1] = m_tree.InsertItem(cs,0,1,pt[level]);
			}
			else	// Normal Node
			{
				pt[level+1] = m_tree.InsertItem(cs,2,3,pt[level]);
				m_tree.SetItemData(pt[level+1],id);	// Set ID
			}
		}
	}

	// Close file
	fclose(fp);

	HTREEITEM hi	= m_tree.GetRootItem();
	while (hi)
	{
		m_tree.Expand(hi,TVE_EXPAND);
		hi	= m_tree.GetNextSiblingItem(hi);
	}
}

void RptTemplate::OnItemexpandedTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	
	*pResult = 0;
	HTREEITEM t = m_tree.GetSelectedItem();

	if (!t) return;
	if (m_tree.GetItemState(t,TVIS_EXPANDED) & TVIS_EXPANDED)
	{
		m_tree.SetItemImage(t,5,4);
	}
	else
	{
		m_tree.SetItemImage(t,0,1);
	}
}

void RptTemplate::OnDblclkTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	ChooseTemplate();
	*pResult = 0;
}

void RptTemplate::OnButtonChoosetemplate() 
{
	ChooseTemplate();
}

bool RptTemplate::ChooseTemplate()
{
	HTREEITEM st;
	if (!(st = m_tree.GetSelectedItem())) return false;
	if (m_tree.ItemHasChildren(st)) return false;

	int id = m_tree.GetItemData(st);
	if (id <= 10 || id >= 2000) return false;
	
	(((CBxtDlg*)AfxGetMainWnd())->report)->SendMessage(WX_REPORT,id,0);
	return true;
}

⌨️ 快捷键说明

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