📄 studentdlg.cpp
字号:
CFileDialog dlg(TRUE,NULL,NULL,0,"jpg Files (*.jpg)|*.jpg||",this);///TRUE为OPEN对话框,FALSE为SAVE AS对话框
if(dlg.DoModal()==IDOK)
{FilePathName=dlg.GetPathName();
if(m_Pic.m_IPicture != NULL) m_Pic.FreePictureData(); //
if(f.Open(FilePathName, CFile::modeRead | CFile::typeBinary, &e)) //打开了一个jpg文件
{
int 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_pset->GetFields()->GetItem("Data")->AppendChunk(varBLOB);
// m_pset->GetFields()->GetItem("ID")->Append("0403305");
}
m_pset->Update();
// +----------------------------------------------
(m_Pic.LoadPictureData(pBuffer, nSize));//接作调用函数读pBuffer的jpg数据准备显示
delete [] pBuffer; //删掉堆上申请的那一块内存
pBuf=0; //以防二次乱用
}
f.Close();
}
CClientDC dc(this);
m_Pic.UpdateSizeOnDC(&dc); // Get Picture Dimentions In Pixels
RECT rect;
m_showpic.GetWindowRect(&rect);
rect.left=rect.left+10;
rect.right=rect.right-10;
rect.top=rect.top-35;
rect.bottom=rect.bottom-55;
m_Pic.Show(&dc, rect);//显示出来看看
CString id;
id=" ";
id+=m_id;
id+="\n学生图象添加修改成功";
MessageBox(id,NULL,MB_OK|MB_ICONINFORMATION);
}
}
void CStudentDlg::OnReset()
{
// TODO: Add your control notification handler code here
}
void CStudentDlg::GetDataFromBase()
{
try
{
long nSize = m_pset->GetFields()->GetItem("Data")->ActualSize;
if(nSize > 0)
{
_variant_t varBLOB;
varBLOB = m_pset->GetFields()->GetItem("Data")->GetChunk(nSize);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(BYTE *pBuffer = new BYTE [nSize+1]) ///重新申请必要的存储空间
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
memcpy(pBuffer,pBuf,nSize); ///复制数据到缓冲区m_pBMPBuffer
SafeArrayUnaccessData (varBLOB.parray);
// int nSize = lDataSize;
(m_Pic.LoadPictureData(pBuffer, nSize));
delete [] pBuffer;
pBuf=0;
///生成BITMAP对象
CDC *hdc=GetDC();
m_Pic.UpdateSizeOnDC(hdc); // Get Picture Dimentions In Pixels
RECT rect;
m_showpic.GetWindowRect(&rect);
rect.left=rect.left+10;
rect.right=rect.right-10;
rect.top=rect.top-35;
rect.bottom=rect.bottom-55;
m_Pic.Show(hdc, rect);//显示出来看看
}
}
}
}
catch (_com_error e) {
}
}
void CStudentDlg::OnInput()
{
// TODO: Add your command handler code here
/*
CFile m_file;
CString m_path;
CFileDialog m_pa(TRUE,NULL,NULL,0,"temp Files (*.temp)|*.temp||",this);
if(m_pa.DoModal()==IDOK)
{
m_path=m_pa.GetPathName();
}
if(m_file.Open(m_path,CFile::modeRead,NULL)==NULL)
return;
m_file.SeekToBegin();
//the code here is used to get the data in the base which is will be outed
CGuestSet m_guestset,m_guest;
CChoiceSet m_choiceset,m_choice;
CBaseSet m_baseset,m_base;
CGradeSet m_gradeset,m_grade;
m_guestset.Open();
m_choiceset.Open();
m_choiceset.MoveLast();
m_baseset.Open();
m_baseset.MoveLast();
m_gradeset.Open();
m_gradeset.MoveLast();
m_guestset.MoveFirst();
int flag=1;
CString dd;
BYTE *p;
BYTE *pBuf;
VARIANT varBLOB;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];
// m_guestset.MovePrev();//这里添加对用户是否重合的验证
if( m_file.Read(&m_guest,sizeof(m_guest))==NULL)
return;
CString id= m_guest.m_guest;
while(!m_guestset.IsEOF())
{
if(m_guestset.m_guest== m_guest.m_guest)//find
{
flag=3;
break;
}
m_guestset.MoveNext();
}
if(flag==3) //which is be found
{
id+="已存在";
MessageBox(id,NULL,MB_OK|MB_ICONINFORMATION);
goto UnResource;
}
if( m_file.Read(&m_base,sizeof(m_base))==NULL)
return;
if(m_file.Read(&dd,9)==NULL)
return;
if(dd=="lulianghu")
{
DWORD size;
if(m_file.Read(&size,sizeof(size))==NULL)
return;
p=new BYTE[size]; //p must be
if(m_file.Read(p,size)==NULL)
return;
}
else
{
m_file.Seek(-9,CFile::current);
}
if(m_file.Read(&m_choice,sizeof(m_choice))==NULL)
return;
if(m_file.Read(&m_grade,sizeof(m_grade))==NULL)
return;
//is used for the guest table
m_guestset.m_guest=m_guest.m_guest;
m_guestset.m_password=m_guest.m_password;
//is used for the base table
m_baseset=m_base;
m_choiceset=m_choice;
m_gradeset=m_grade;
// the code here which used for reflash the data
m_guestset.MoveLast();
m_guestset.AddNew();
m_gradeset.MoveLast();
m_gradeset.AddNew();
m_choiceset.MoveLast();
m_choiceset.AddNew();
m_baseset.MoveLast();
m_baseset.AddNew();
m_pset->MoveLast();
pBuf = p; ///下面这一大段是把pBuffer里的jpg数据放到库中
if(pBuf)
{
rgsabound[0].lLbound = 0;
DWORD nSize=GlobalSize(p);
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_pset->GetFields()->GetItem("Data")->AppendChunk(varBLOB);
// m_pset->GetFields()->GetItem("ID")->Append("0403305");
}
m_pset->Update();
m_guestset.Update();
m_gradeset.Update();
m_choiceset.Update();
m_baseset.Update();
UnResource:
{
m_gradeset.Close();
m_baseset.Close();
m_choiceset.Close();
m_guestset.Close();
delete []p;
m_file.Close();
}
MessageBox(id+"信息导入成功",NULL,MB_OK|MB_ICONINFORMATION);
*/
}
void CStudentDlg::OnOut()
{
// TODO: Add your command handler code
Out out;
CString id;
if(out.DoModal()==IDOK)
{
id=out.m_id;
if(id=="")
return;
}
CFile m_file;
CFile m_pil;
//the code here is used to get the data in the base which is will be outed
CGuestSet m_guestset;
CChoiceSet m_choiceset;
CBaseSet m_baseset;
CGradeSet m_gradeset;
m_guestset.Open();
m_choiceset.Open();
m_choiceset.MoveFirst();
m_baseset.Open();
m_baseset.MoveFirst();
m_gradeset.Open();
m_gradeset.MoveFirst();
m_guestset.MoveFirst();
int flag=1;
// m_guestset.MovePrev();//这里添加对用户是否重合的验证
while(!m_guestset.IsEOF())
{
if(m_guestset.m_guest== id)
{
flag=3;
break;
}
m_guestset.MoveNext();
}
if(flag!=3) //which is be found
{
id+="不存在";
MessageBox(id,NULL,MB_OK|MB_ICONINFORMATION);
goto UnResource;
}
m_file.Open(id+".temp",CFile::modeCreate | CFile::modeWrite ,NULL);
m_file.SeekToEnd();
m_file.Write(&m_guestset,sizeof(m_guestset));
m_pset->MoveFirst();
while(!m_baseset.IsEOF())
{
if(m_baseset.m_id==id)
{
flag=5;
break;
}
m_baseset.MoveNext();
m_pset->MoveNext();
}
DWORD dsize;
BYTE *pBuffer;
try
{
long nSize = m_pset->GetFields()->GetItem("Data")->ActualSize;
if(nSize > 0)
{
_variant_t varBLOB;
varBLOB = m_pset->GetFields()->GetItem("Data")->GetChunk(nSize);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(pBuffer = new BYTE [nSize+1]) ///重新申请必要的存储空间
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
memcpy(pBuffer,pBuf,nSize); ///复制数据到缓冲区m_pBMPBuffer
SafeArrayUnaccessData (varBLOB.parray);
// int nSize = lDataSize;
dsize=GlobalSize(pBuffer);
}
}
}
}
catch (_com_error e)
{}
m_file.SeekToEnd();
m_file.Write(&m_baseset,sizeof(m_baseset));
if(out.m_xuan==1)
{
m_pil.Open(id+".jpg",CFile::modeCreate | CFile::modeWrite ,NULL);
m_pil.Write(pBuffer,dsize);
m_pil.Close();
}
else//xuanze fangshi
{
CString flag="lulianghu";
m_file.SeekToEnd();
m_file.Write(flag,sizeof(flag));
m_file.SeekToEnd();
m_file.Write(&dsize,sizeof(dsize));
m_file.SeekToEnd();
m_file.Write(pBuffer,dsize);
}
delete [] pBuffer;
while(!m_choiceset.IsEOF())
{
if(m_choiceset.m_id==id)
{
flag=4;
break;
}
m_choiceset.MoveNext();
}
m_file.SeekToEnd();
m_file.Write(&m_choiceset,sizeof(m_choiceset));
while(!m_gradeset.IsEOF())
{
if(m_gradeset.m_id==id)
{
flag=6;
break;
}
m_gradeset.MoveNext();
}
m_file.SeekToEnd();
m_file.Write(&m_gradeset,sizeof(m_gradeset));
m_file.Close();
UnResource:
{
m_gradeset.Close();
m_baseset.Close();
m_choiceset.Close();
m_guestset.Close();
}
MessageBox(id+"信息导出成功",NULL,MB_OK|MB_ICONINFORMATION);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -