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

📄 recordnew.cpp

📁 我自己用VC编的
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// RecordNew.cpp : implementation file
//

#include "stdafx.h"
#include "MyRecord.h"
#include "RecordNew.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CMyRecordApp theApp;       // 在此引用应用类中的theApp来获取库连接指针
/////////////////////////////////////////////////////////////////////////////
// CRecordNew dialog


CRecordNew::CRecordNew(CWnd* pParent /*=NULL*/)
	: CDialog(CRecordNew::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRecordNew)
	m_newitem = _T("");
	m_newname = _T("");
	m_newnote = _T("");
	m_picture1 = _T("");
	m_picture2 = _T("");
	m_picture3 = _T("");
	//}}AFX_DATA_INIT
	RecordNum=0;
}


void CRecordNew::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRecordNew)
	DDX_Control(pDX, IDC_LIST, m_list);
	DDX_Control(pDX, IDC_NEWTIME, m_newtime);
	DDX_Text(pDX, IDC_NEWITEM, m_newitem);
	DDX_Text(pDX, IDC_NEWNAME, m_newname);
	DDX_Text(pDX, IDC_NEWNOTE, m_newnote);
	DDX_Text(pDX, IDC_PICTURE1, m_picture1);
	DDX_Text(pDX, IDC_PICTURE2, m_picture2);
	DDX_Text(pDX, IDC_PICTURE3, m_picture3);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRecordNew, CDialog)
	//{{AFX_MSG_MAP(CRecordNew)
	ON_BN_CLICKED(IDC_SAVE, OnSave)
	ON_BN_CLICKED(IDC_NEWPICTURE1BUTTON, OnNewpicture1button)
	ON_BN_CLICKED(IDC_NEWPICTURE2BUTTON, OnNewpicture2button)
	ON_BN_CLICKED(IDC_NEWPICTURE3BUTTON, OnNewpicture3button)
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_REWRITE, OnRewrite)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRecordNew message handlers



void CRecordNew::OnSave() 
{
	// TODO: Add your control notification handler code here
	
	if(MessageBox("确定保存吗?","确认",MB_OKCANCEL)==IDOK)
	{
		UpdateData(TRUE);
		CString strnewname,strnewtime,strnewitem,strnewnote;
		CFile f;
		CFileException e;
		if(m_newname.IsEmpty())
		{
			AfxMessageBox("请输入病人姓名!");
			return;
		}
		strnewname=m_newname;
		CTime time;
		m_newtime.GetTime(time);
		strnewtime=time.Format("%y-%m-%d");
		strnewitem=m_newitem;
		if(m_newitem.IsEmpty())
		{
			MessageBox("请输入手术项目!");
			return;
		}
		strnewnote=m_newnote;
		RecordNum+=1;
		GName[RecordNum-1]=strnewname;
		GTime[RecordNum-1]=strnewtime;
		GItem[RecordNum-1]=strnewitem;
		GNote[RecordNum-1]=strnewnote;
		//------------------------向列表中插入记录-------------------------------------//
		//-----------------------------------------------------------------------------//
		m_list.DeleteAllItems();
		for(int i=0;i<RecordNum;i++)
		{
			m_list.InsertItem(i,GName[i]);
			m_list.SetItemText(i,1,GTime[i]);
			m_list.SetItemText(i,2,GItem[i]);
			m_list.SetItemText(i,3,GNote[i]);
//			m_list.InsertItem(i,strnewname);		//------不能这样编,否则当输入几次----//
//			m_list.SetItemText(i,1,strnewtime);		//------不同病人信息的时候,最后在----//
//			m_list.SetItemText(i,2,strnewitem);		//------列表框中显示的全部结果都和----//
//			m_list.SetItemText(i,3,strnewnote);		//------最后一次输入的信息一样--------//
		}
		//------------------------向数据库中插入记录-----------------------------------//
		//-----------------------------------------------------------------------------//
		try
		{
			m_pRecordset->AddNew();
			m_pRecordset->PutCollect("patientname",_variant_t(strnewname));
			m_pRecordset->PutCollect("operationtime",_variant_t(strnewtime));
			m_pRecordset->PutCollect("operationitem",_variant_t(strnewitem));
			m_pRecordset->PutCollect("note",_variant_t(strnewnote));
	
			//---------------------保存图象内容进数据库(重要!)-------------------------------//
			if(m_Pic.m_IPicture != NULL) m_Pic.FreePictureData(); // Important - Avoid Leaks...

			if(f.Open(m_strPhotoPath1, CFile::modeRead | CFile::typeBinary, &e)) //打开了一个jpg文件
			{	

				nSize = f.GetLength();          //先得到jpg文件长度
				BYTE * pBuffer = new BYTE [nSize];  //按文件的大小在堆上申请一块内存
	 
				if (f.Read(pBuffer, nSize) > 0 )    //把jpg文件读到pBuffer(堆上申请一块内存)
				{   
					BYTE *pBuf = pBuffer;     //下面这一大段是把pBuffer里的jpg数据放到库中
					VARIANT			varBLOB;
					SAFEARRAY		*psa;
					SAFEARRAYBOUND	rgsabound[1];
					
					if(pBuf)
					{    
						rgsabound[0].lLbound = 0;
						rgsabound[0].cElements = nSize;
						psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
						for (long i = 0; i < (long)nSize; i++)
						SafeArrayPutElement (psa, &i, pBuf++);
						varBLOB.vt = VT_ARRAY | VT_UI1;
						varBLOB.parray = psa;
						m_pRecordset->GetFields()->GetItem("picture1")->AppendChunk(varBLOB);
					}
						
					(m_Pic.LoadPictureData(pBuffer, nSize));//接作调用函数读pBuffer的jpg数据准备显示
					delete [] pBuffer;     //删掉堆上申请的那一块内存
					pBuf=0;                //以防二次乱用
				}
				f.Close();
			}
			//---------------------------------------------------------------------------------//
			//---------------------保存图象内容进数据库(重要!)-------------------------------//
			if(m_Pic.m_IPicture != NULL) m_Pic.FreePictureData(); // Important - Avoid Leaks...

			if(f.Open(m_strPhotoPath2, CFile::modeRead | CFile::typeBinary, &e)) //打开了一个jpg文件
			{	

				nSize = f.GetLength();          //先得到jpg文件长度
				BYTE * pBuffer = new BYTE [nSize];  //按文件的大小在堆上申请一块内存
	 
				if (f.Read(pBuffer, nSize) > 0 )    //把jpg文件读到pBuffer(堆上申请一块内存)
				{   
					BYTE *pBuf = pBuffer;     //下面这一大段是把pBuffer里的jpg数据放到库中
					VARIANT			varBLOB;
					SAFEARRAY		*psa;
					SAFEARRAYBOUND	rgsabound[1];
					
					if(pBuf)
					{    
						rgsabound[0].lLbound = 0;
						rgsabound[0].cElements = nSize;
						psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
						for (long i = 0; i < (long)nSize; i++)
						SafeArrayPutElement (psa, &i, pBuf++);
						varBLOB.vt = VT_ARRAY | VT_UI1;
						varBLOB.parray = psa;
						m_pRecordset->GetFields()->GetItem("picture2")->AppendChunk(varBLOB);
					}
						
					(m_Pic.LoadPictureData(pBuffer, nSize));//接作调用函数读pBuffer的jpg数据准备显示
					delete [] pBuffer;     //删掉堆上申请的那一块内存
					pBuf=0;                //以防二次乱用
				}
				f.Close();
			}
			//---------------------------------------------------------------------------------//
			//---------------------保存图象内容进数据库(重要!)-------------------------------//
			if(m_Pic.m_IPicture != NULL) m_Pic.FreePictureData(); // Important - Avoid Leaks...

			if(f.Open(m_strPhotoPath3, CFile::modeRead | CFile::typeBinary, &e)) //打开了一个jpg文件
			{	

				nSize = f.GetLength();          //先得到jpg文件长度
				BYTE * pBuffer = new BYTE [nSize];  //按文件的大小在堆上申请一块内存
	 
				if (f.Read(pBuffer, nSize) > 0 )    //把jpg文件读到pBuffer(堆上申请一块内存)
				{   
					BYTE *pBuf = pBuffer;     //下面这一大段是把pBuffer里的jpg数据放到库中
					VARIANT			varBLOB;
					SAFEARRAY		*psa;
					SAFEARRAYBOUND	rgsabound[1];
					
					if(pBuf)
					{    
						rgsabound[0].lLbound = 0;
						rgsabound[0].cElements = nSize;
						psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
						for (long i = 0; i < (long)nSize; i++)
						SafeArrayPutElement (psa, &i, pBuf++);
						varBLOB.vt = VT_ARRAY | VT_UI1;
						varBLOB.parray = psa;
						m_pRecordset->GetFields()->GetItem("picture3")->AppendChunk(varBLOB);
					}
						
					(m_Pic.LoadPictureData(pBuffer, nSize));//接作调用函数读pBuffer的jpg数据准备显示
					delete [] pBuffer;     //删掉堆上申请的那一块内存
					pBuf=0;                //以防二次乱用
				}
				f.Close();
			}
			//---------------------------------------------------------------------------------//
			m_pRecordset->Update();		//更新数据库
			m_pRecordset->MoveLast();	//当前记录移动到最后
		}
		catch(_com_error e)
		{
			CString strError;
			strError.Format("警告:插入信息是发生异常。错误信息: %s",\
				e.ErrorMessage());
			AfxMessageBox(strError);
		}
	}
	OnRewrite();
}

void CRecordNew::OnRewrite() 
{
	// TODO: Add your control notification handler code here
	m_newitem = _T("");
	m_newname = _T("");
	m_newnote = _T("");
	
	UpdateData(FALSE);
}

void CRecordNew::OnNewpicture1button() 
{
	// TODO: Add your control notification handler code here
	//	InsertPhoto();
	//	if (m_Picture.Load(m_strPhotoPath))//载入图片路径,在picturebox中显示图片
	//	m_Picture.Draw();
	CFile file;
	CString  FilePathName;
	CFileException e;
	HRESULT hr;
	//获得picture控件的大小
	CWnd *pWnd=GetDlgItem(IDC_PICTURE1); 
	CDC *pDC=pWnd->GetDC(); 
	CRect rect; 
	pWnd->GetClientRect(&rect); 
	//填充背景
	HBRUSH   brush   =   (HBRUSH)::GetStockObject(GRAY_BRUSH);     
    ::FillRect(pDC->m_hDC,rect,brush); 
	CFileDialog dlg(TRUE,NULL,NULL,0,"BMP Files (*.bmp)|*.bmp|jpg Files (*.jpg)|*.jpg||",this);///TRUE为OPEN对话框,FALSE为SAVE AS对话框
    if(dlg.DoModal()==IDOK)
    {
		FilePathName=dlg.GetPathName();
		m_strPhotoPath1=FilePathName;
		file.Open(FilePathName, CFile::modeRead | CFile::shareDenyNone );  // 读入文件内容
		//获得picture大小
		DWORD dwSize = file.GetLength();

		HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, dwSize );

⌨️ 快捷键说明

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