IPicture *pPic;
if(SUCCEEDED(OleLoadPicture(ps,pStm->GetSize() ,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
double fX,fY;
CDC *pDC = GetClientDC();//榪欓噷鏍規嵁鍏蜂綋璇峰喌鏉ュ彇
fX=(double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);
fY =(double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);
if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))
AfxMessageBox("鍥懼儚緇樺埗澶辮觸錛?);
pPic->Release();
}
榪欐牱灝卞畬鎴愪簡瀵瑰浘鐗囨枃浠朵粠鏁版嵁搴撹鍑哄拰鏄劇ず鐨勮繃紼嬨?br> 瀵逛簬浠庢枃浠跺啓鍏ユ暟鎹簱灝辯浉瀵圭殑瀹規槗澶氫簡,
_StreamPtr pStm;
pStm.CreateInstance("ADODB.Stream");
variant_t varOptional(DISP_E_PARAMNOTFOUND,VT_ERROR);
// long lDataSize = m_pRecordset->GetFields()->GetItem("photo")->ActualSize;
pStm->PutType(adTypeBinary錛?/p>
pStm->Open( varOptional,
adModeUnknown, adOpenStreamUnspecified, _bstr_t(), _bstr_t());
pStm->LoadFromFile("c:\\book.gif");//璇誨叆鏂囦歡
variant_t varBLOB=pStm->Read(adReadAll);
m_pRecordset->GetFields()->GetItem("photo")->Value= varBLOB;//淇濆瓨鍒版暟鎹泦瀵硅薄銆?br>浠ヤ笂灝辨槸鍏充簬ADO鐨凷tream瀵硅薄鎿嶄綔鏁版嵁搴撲腑鐨刡lob瀛楁鐨勫叿浣撴柟娉曪紝涓昏鏄鍥劇墖鎴戜滑榪樺彲瀵瑰畠榪涜鏀歸犳垚鍏朵粬鐨勶紝姣斿璇昏呭彲浠ユ敼閫犳垚璇誨彇XMl鏂囦歡錛屽茍淇濆瓨絳夌瓑銆?br>
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")2.銆搴旂敤紼嬪簭鍒濆鍖栦腑鍔犲叆:
AfxOleInit();HRESULT hr;try{ hr = m_pConnection.CreateInstance("ADODB.Connection");///鍒涘緩Connection瀵硅薄 if(SUCCEEDED(hr)) { hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=wy.mdb","","",adModeUnknown);///榪炴帴鏁版嵁搴?///涓婇潰涓鍙ヤ腑榪炴帴瀛椾覆涓殑Provider鏄拡瀵笰CCESS2000鐜鐨勶紝瀵逛簬ACCESS97,闇瑕佹敼涓?Provider=Microsoft.Jet.OLEDB.3.51; }}catch(_com_error e)///鎹曟崏寮傚父{ CString errormessage; errormessage.Format("鎵撳紑 wy.mdb 鏁版嵁搴撳け璐?\r\n閿欒淇℃伅:%s",e.ErrorMessage()); AfxMessageBox(errormessage);///鏄劇ず閿欒淇℃伅}3.銆搴旂敤紼嬪簭EXIT涓姞鍏?
if (m_pConnection->State) m_pConnection->Close();4.銆搴旂敤紼嬪簭涓姞鍏?
_ConnectionPtr m_pConnection;5.銆瀵硅瘽妗嗙被涓姞鍏?
_RecordsetPtr m_pRecordset;6. 娉ㄦ剰浣跨敤:
extern CWYApp theApp;7. 浣跨敤綰綍闆?
try{ m_pRecordset.CreateInstance("ADODB.Recordset"); m_pRecordset->Open("SELECT * FROM 瀹㈡埛 ORDER BY 瀹㈡埛id", _variant_t((IDispatch*)theApp.m_pConnection,true), adOpenStatic,adLockOptimistic,adCmdText);}catch(_com_error e)///鎹曟崏寮傚父{ AfxMessageBox("璇誨彇鏁版嵁搴撳け璐?");///鏄劇ず閿欒淇℃伅}CPicture綾?瀹冭兘澶熸樉紺篔PG.GIF絳夌瓑鍥劇墖錛岃鎯呰鐪婥Picture.h澶存枃浠?
CPicture.h
CPicture.cpp 浜屻佹祦紼嬪浘
浣犱竴鐪嬩究鐭ワ細 ADO浣滅敤鍦╞uffer鍐呭瓨鍜孉CCESS2002鏁版嵁搴撲箣闂?鑰孋Picture浣滅敤鍦╞uffer鍐呭瓨鍜屾樉紺虹獥鍙d箣闂? 涓夈佸皢jpg瀛樺叆搴撳茍鏄劇ず
void COneDlg::OnButton1() { CFile f; CString FilePathName; CFileException e; CFileDialog dlg(TRUE,NULL,NULL,0,"jpg Files (*.jpg)|*.jpg||",this); if(dlg.DoModal()==IDOK) { FilePathName=dlg.GetPathName(); if(m_Pic.m_IPicture != NULL) m_Pic.FreePictureData(); // Important - Avoid Leaks... if(f.Open(FilePathName, Cfile::modeRead | Cfile::typeBinary, &e)) //鎵撳紑浜嗕竴涓猨pg鏂囦歡 { int nSize = f.GetLength(); //鍏堝緱鍒癹pg鏂囦歡闀垮害 BYTE * pBuffer = new BYTE [nSize]; //鎸夋枃浠剁殑澶у皬鍦ㄥ爢涓婄敵璇蜂竴鍧楀唴瀛? if (f.Read(pBuffer, nSize) > 0 ) //鎶妀pg鏂囦歡璇誨埌pBuffer(鍫嗕笂鐢寵涓鍧楀唴瀛? { BYTE *pBuf = pBuffer; ///涓嬮潰榪欎竴澶ф鏄妸pBuffer閲岀殑jpg鏁版嵁鏀懼埌搴撲腑 VARIANT varBLOB; SAFEARRAY *psa; SAFEARRAYBOUND rgsabound[1]; m_pRecordset->AddNew(); 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("j")->AppendChunk(varBLOB); } m_pRecordset->Update(); (m_Pic.LoadPictureData(pBuffer, nSize));//鎺ヤ綔璋冪敤鍑芥暟璇籶Buffer鐨刯pg鏁版嵁鍑嗗鏄劇ず 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) );//鏄劇ず鍑烘潵鐪嬬湅 } }.......瀹屾暣鐨勪緥瀛愪腑鏈夎緝澶氱殑涓枃璇存槑錛屽浣犳湁鐢ㄥ悧!?錛屾湁浠涔堜笉濡ヤ箣澶勮楂樻墜鎸囨暀