📄 insertdlg.cpp
字号:
// InsertDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Yornik1.h"
#include "InsertDlg.h"
#include"ADOConn.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CInsertDlg dialog
//#include "ADOConn.h"
extern CYornik1App theApp;
extern _ConnectionPtr m_pConnection;
CInsertDlg::CInsertDlg(CWnd* pParent /*=NULL*/)
: CDialog(CInsertDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CInsertDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CInsertDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CInsertDlg)
DDX_Control(pDX, IDC_COMBO1, m_sel);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CInsertDlg, CDialog)
//{{AFX_MSG_MAP(CInsertDlg)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CInsertDlg message handlers
void CInsertDlg::OnButton1()
{
CFile f;
CString FilePathName,FilePathName1;
CFileException e;
// ADOConn m_AdoConn;
// m_AdoConn.OnInitADOConn();
// _bstr_t vSQL;
//VARIANT name;
CFileDialog dlg(TRUE,NULL,NULL,0,"图形 Files (*.bmp)|*.bmp||",this);///TRUE为OPEN对话框,FALSE为SAVE AS对话框
if(dlg.DoModal()==IDOK)
{FilePathName=dlg.GetPathName();
FilePathName1=dlg.GetFileTitle();
if(m_Pic.m_IPicture != NULL)
m_Pic.FreePictureData(); // Important - Avoid Leaks...
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];
//name=COleVariant(FilePathName);
// m_pRecordset->AddNew();
// m_pRecordset->PutCollect("id", _variant_t(FilePathName));
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;
CString image;
image=(LPCTSTR)(_bstr_t)varBLOB;
vSQL = "INSERT INTO 图象(id,j) VALUES('" + FilePathName1 + "','" + image + "')";
m_AdoConn.ExecuteSQL(vSQL);
// m_pRecordset->GetFields()->GetItem("j")->AppendChunk(varBLOB);
}
// m_pRecordset->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
// m_Pic.Show(&dc, CRect(200,0,200+m_Pic.m_Width,m_Pic.m_Height) );//显示出来看看
}
}
BOOL CInsertDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_AdoConn.OnInitADOConn();
vSQL="SELECT * FROM 图象";
m_pRecordset=m_AdoConn.GetRecordSet(vSQL);
while(!m_pRecordset->adoEOF)
{m_sel.AddString((LPCSTR)(_bstr_t)m_pRecordset->GetCollect("id"));
m_pRecordset->MoveNext();
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CInsertDlg::OnSelchangeCombo1()
{
/* CString str;
// ADOConn m_AdoConn;
// m_AdoConn.OnInitADOConn();
// _bstr_t vSQL;
CString sFileName;
//_bstr_t a;
int index=m_sel.GetCurSel();
m_sel.GetLBText(index,str);
//m_pCommand.CreateInstance(__uuidof(Command));
//m_pCommand->ActiveConnection=m_pConnection; // 将库连接赋于它
vSQL="SELECT * FROM 图象 WHERE id='"+str+"'";
//m_pCommand->CommandText = a; // SQL语句
m_pRecordset = m_AdoConn.GetRecordSet(vSQL);
//(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("型号")
try
{//sFileName=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("id");
long nSize = m_pRecordset->GetFields()->GetItem("j")->ActualSize;
if(nSize > 0)
{_variant_t varBLOB;
varBLOB =m_pRecordset->GetFields()->GetItem("j")->GetChunk(nSize);
m_pRecordset->GetFields()->GetItem("j")->GetChunk()
//varB LOB = m_pRecordset->GetCollect("j");
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对象
CClientDC dc(this);
m_Pic.UpdateSizeOnDC(&dc); // Get Picture Dimentions In Pixels
m_Pic.Show(&dc, CRect(0,100,m_Pic.m_Width,100+m_Pic.m_Height) );
CFileDialog dlg(FALSE, "bmp", sFileName,OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY, "图象文件(*.bmp)|*.bmp||", this);
dlg.m_ofn.lpstrTitle = _T("保存bmp文件");
if (dlg.DoModal() == IDOK)
{
// 实现存盘
CString fileName = dlg.GetPathName();
CFile file(fileName, CFile::modeCreate|CFile::modeReadWrite|CFile::shareExclusive);
CArchive ar(&file, CArchive::store|CArchive::bNoFlushOnDelete);
sFileName=dlg.GetPathName();
m_Pic.SaveAsBitmap(sFileName);
UpdateData(false);
ar.Close();
}
}
}
}
}
catch (_com_error e) {
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -