• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            網(wǎng)上好象這個(gè)例子還沒(méi)有樣,如果你用VC做一個(gè)人事部管理系統(tǒng),不可能沒(méi)有人員照片吧!能找到的例子中都是用BMP,不敢用!
            這個(gè)例子用到了VC6.0和access2002(officeXP),涉及到ADO的用法,文件對(duì)話框的使用,一個(gè)CPicture類和一個(gè)buffer緩沖區(qū)。

            一、我的ADO用法整理

            1. stdafx.h頭文件中加入:
            #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
            2. 應(yīng)用程序初始化中加入:
            AfxOleInit();HRESULT hr;try{	hr = m_pConnection.CreateInstance("ADODB.Connection");///創(chuàng)建Connection對(duì)象	if(SUCCEEDED(hr))	{	hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=wy.mdb","","",adModeUnknown);///連接數(shù)據(jù)庫(kù)	///上面一句中連接字串中的Provider是針對(duì)ACCESS2000環(huán)境的,對(duì)于ACCESS97,需要改為:Provider=Microsoft.Jet.OLEDB.3.51;	}}catch(_com_error e)///捕捉異常{	CString errormessage;	errormessage.Format("打開(kāi) wy.mdb 數(shù)據(jù)庫(kù)失敗!\r\n錯(cuò)誤信息:%s",e.ErrorMessage());	AfxMessageBox(errormessage);///顯示錯(cuò)誤信息}
            3. 應(yīng)用程序EXIT中加入:
            if (m_pConnection->State) 	    m_pConnection->Close(); 
            4. 應(yīng)用程序中加入:
            _ConnectionPtr m_pConnection;
            5. 對(duì)話框類中加入:
            _RecordsetPtr m_pRecordset;
            6. 注意使用:
            extern CWYApp theApp;
            7. 使用紀(jì)錄集:
            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("讀取數(shù)據(jù)庫(kù)失敗!");///顯示錯(cuò)誤信息}
            CPicture類(它能夠顯示JPG.GIF等等圖片,詳情請(qǐng)看CPicture.h頭文件)

            CPicture.h
            CPicture.cpp

            二、流程圖



            你一看便知: ADO作用在buffer內(nèi)存和ACCESS2002數(shù)據(jù)庫(kù)之間,而CPicture作用在buffer內(nèi)存和顯示窗口之間.

            三、將jpg存入庫(kù)并顯示

            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)) //打開(kāi)了一個(gè)jpg文件		{ 			int nSize = f.GetLength();          //先得到j(luò)pg文件長(zhǎng)度			BYTE * pBuffer = new BYTE [nSize];  //按文件的大小在堆上申請(qǐng)一塊內(nèi)存  			if (f.Read(pBuffer, nSize) > 0 )    //把jpg文件讀到pBuffer(堆上申請(qǐng)一塊內(nèi)存)			{				BYTE *pBuf = pBuffer;     ///下面這一大段是把pBuffer里的jpg數(shù)據(jù)放到庫(kù)中				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));//接作調(diào)用函數(shù)讀pBuffer的jpg數(shù)據(jù)準(zhǔn)備顯示			delete [] pBuffer;     //刪掉堆上申請(qǐng)的那一塊內(nèi)存			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) );//顯示出來(lái)看看	} }.......
            完整的例子中有較多的中文說(shuō)明,對(duì)你有用嗎!?,有什么不妥之處請(qǐng)高手指教 
            Posted on 2007-01-13 16:42 艾凡赫 閱讀(779) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ADO
            久久精品国产一区二区三区日韩| 久久精品国产亚洲AV无码偷窥| 久久午夜羞羞影院免费观看| 亚洲精品乱码久久久久久| 久久久久AV综合网成人 | 精品熟女少妇a∨免费久久| 99久久国产综合精品网成人影院| 久久亚洲av无码精品浪潮| 色欲综合久久躁天天躁蜜桃| 久久亚洲AV成人无码国产| 久久九色综合九色99伊人| 久久影院综合精品| 久久亚洲综合色一区二区三区| 亚洲狠狠婷婷综合久久蜜芽| 国产A级毛片久久久精品毛片| 蜜臀av性久久久久蜜臀aⅴ麻豆| 久久香蕉一级毛片| 日本久久久久亚洲中字幕| 久久久WWW成人免费毛片| 国产精品久久久福利| 狠狠色婷婷久久一区二区三区| 久久综合九色欧美综合狠狠| 国产日产久久高清欧美一区| 精品久久久无码21p发布| 久久久久久国产a免费观看不卡 | 香蕉久久永久视频| 国产精品亚洲综合专区片高清久久久 | 狠狠久久亚洲欧美专区| 伊人色综合久久天天人手人婷 | 久久国产综合精品五月天| 国产精品对白刺激久久久| 97精品依人久久久大香线蕉97| 久久久久久久综合日本| 久久99国产一区二区三区| 久久久精品人妻无码专区不卡| WWW婷婷AV久久久影片| 久久久久久国产精品免费无码 | 亚洲国产二区三区久久| 大香网伊人久久综合网2020| 亚洲综合精品香蕉久久网97| 99久久99久久精品国产片|