谢了先!!
解决方案 »
- 怎样让std::string类型的变量直接和CString类型的变量直接赋值?
- 本人建一vc技术交流群欢迎大家加入讨论
- 如何让web browse控件的所有链接都在默认浏览器中打开?
- 大家好,windows下没有sockaddr_un结构体,有没有替代的方法,谢谢!
- 刚学C++, 提一个简单的类继承的问题
- 那位大虾曾做过收发邮件(发邮件也需验证身份)的程序,能不能给小弟指引一下?
- 请问:哪儿有qt下载?
- 我用ShellExecute()打开一个URL,却在有的机子不能运行,有的却能,为什么?
- windows media player
- DirectX9.0 爆炸特效
- 小弟不懂vc,请大家帮我读一下,并详细说明一下,代码很短
- 如何将位图拉伸显示,急
HDC hdc;
char *pBuf;
VARIANT varBLOB;
VARIANT rgvValues;
BSTR Bstr1;
long lDataSize;
COleVariant rValueData;
hr=CoInitialize(NULL);
CString Constr,wCmdString;
CComPtr<ADOField> pField;
// if(FAILED(hr))
m_Conn = NULL;
m_Rec = NULL;
pFields = NULL;
hr = ::CoCreateInstance((REFCLSID)CLSID_CADOConnection,NULL,CLSCTX_INPROC_SERVER,\
(REFIID)IID_IADOConnection,(LPVOID*)&m_Conn);
if (FAILED(hr))
return ;
hr = ::CoCreateInstance((REFCLSID)CLSID_CADORecordset,NULL,CLSCTX_INPROC_SERVER,\
(REFIID)IID_IADORecordset,(LPVOID*)&m_Rec);
if (FAILED(hr))
return ;
Constr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+tempstr+";Persist Security Info=False";
hr = m_Conn->Open(CComBSTR(Constr),CComBSTR(""),CComBSTR(""),adOpenUnspecified);
if (FAILED(hr))
{
::AfxMessageBox("连接数据库错误!");
return ;
}
wCmdString=_T("select * from userphoto");//
hr = m_Rec->Open(CComVariant(wCmdString),CComVariant(m_Conn),adOpenKeyset,adLockOptimistic,adCmdText);
if (FAILED(hr))
{
::AfxMessageBox("打开表错误!");
return ;
}
m_Rec->get_Collect(CComVariant(1),rValueData);
Bstr1= (_bstr_t) rValueData;
m_UserName.Format("%s",(CString)Bstr1);
rValueData.Clear();
m_Rec->get_Collect(CComVariant(2),rValueData); ///为新记录填充username字段
m_UseOld=rValueData.intVal;
pField=NULL;
m_Rec->get_Fields(&pFields);//加入BLOB类型的数据
pFields->get_Item(CComVariant(3),&pField);
pField->get_ActualSize(&lDataSize);
if(lDataSize > 0)
{
rgvValues.vt = VT_ERROR;
rgvValues.scode = DISP_E_PARAMNOTFOUND;
pField->GetChunk(lDataSize,&varBLOB);
if(varBLOB.vt == (VT_ARRAY | VT_UI1)) ///判断数据类型是否正确
{
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf); ///得到指向数据的指针
/*****在这里我们可以对pBuf中的数据进行处理*****/
SafeArrayUnaccessData (varBLOB.parray);
}
}
hdc=::GetDC(m_Show.m_hWnd);
CRect r_Show;
m_Show.GetClientRect(r_Show);
int xpos=r_Show.left;
int ypos=r_Show.top;// IPicture *pPic;
IStream *pStm;
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, lDataSize);
LPVOID pvData = NULL;
if (hGlobal != NULL)
{
if ((pvData = GlobalLock(hGlobal)) != NULL)
{
memcpy(pvData,pBuf,lDataSize);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
if(SUCCEEDED(OleLoadPicture(pStm,lDataSize,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
m_ok=TRUE;
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
double fX,fY;
fX = r_Show.Width();
fY = r_Show.Height();
if(FAILED(pPic->Render(hdc,xpos,ypos,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))
AfxMessageBox("Failed To Render The picture!");
// pPic->Release();
}
else
AfxMessageBox("Error Loading Picture From Stream!");
}
}
GlobalFree(hGlobal);