?? 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 + -