VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
ATL控件Picture属性赋值方法

作者:未知 来源:月光软件站 加入时间:2005-6-5 月光软件站

//接口函数
STDMETHODIMP CObj::init()
{
 // TODO: Add your implementation code here
 initPic(m_pPicture,"F:\\obj.bmp");

 return S_OK;
}

//初始化m_pPicture的函数
void CObj::initPic(CComPtr<IPictureDisp> &pPicture,LPCTSTR path)
{
 using namespace std;

 long cb;
 fstream file(path, ios_base::in);
 file.seekg(0, ios::end);
 cb = file.tellg();

 CComPtr<IStream> pStm;
 HGLOBAL hGlob  = GlobalAlloc(GHND, cb);
 LPVOID pvData = NULL;
 if (hGlob )
 {
  if ((pvData = GlobalLock(hGlob )) != NULL)
  {
   file.seekg(0,ios::beg);
   file.read((char*)pvData,cb);
   GlobalUnlock(hGlob );
   CreateStreamOnHGlobal(hGlob , TRUE, &pStm);
  }
 }
 m_pPicture = NULL;
 OleLoadPicture(pStm,cb,FALSE,IID_IPictureDisp,(LPVOID*)&m_pPicture);
 pStm.Release();
 GlobalFree(hGlob );
 file.close();

 this->m_bRequiresSave = TRUE;
 this->FireOnChanged(DISPID_PICTURE);
 this->FireViewChange();
}

//绘制图片的函数
void CObj::drawPic(ATL_DRAWINFO& di)
{
 RECT& rc = *(RECT*)di.prcBounds;
 LPPICTURE pPict ;
 DWORD dwAttr  ;
 OLE_XSIZE_HIMETRIC cxSrc;
 OLE_YSIZE_HIMETRIC cySrc;
 if ((m_pPicture != NULL) &&SUCCEEDED(m_pPicture->QueryInterface(IID_IPicture, (LPVOID*)&pPict)))
 {
  pPict->get_Attributes(&dwAttr);
  if(dwAttr==S_OK)
  {
   pPict->get_Width(&cxSrc);
   pPict->get_Height(&cySrc);  
   pPict->Render(di.hdcDraw,rc.left, rc.top, rc.right, rc.bottom,0,0,cxSrc,cySrc,&rc);
  } 
 }
}

//
 HRESULT OnDraw(ATL_DRAWINFO& di)
 {
  RECT& rc = *(RECT*)di.prcBounds;
  Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom);

  SetTextAlign(di.hdcDraw, TA_CENTER|TA_BASELINE);
  LPCTSTR pszText = _T("ATL 3.0 : Obj");
  TextOut(di.hdcDraw,
   (rc.left + rc.right) / 2,
   (rc.top + rc.bottom) / 2,
   pszText,
   lstrlen(pszText));

  drawPic(di); //通过这句绘制

  return S_OK;
 }




相关文章

相关软件