📄 recordnew.cpp
字号:
// 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 + -