幽幽
 
posts - 51,  comments - 28,  trackbacks - 0
void CxxxView::OnDraw(CDC* pDC)
{
    ::CoInitialize(NULL); 
// COM 初始化
    HRESULT hr;
    CFile file;
   
    file.Open(
"c:\\aa.jpg", CFile::modeRead | CFile::shareDenyNone );  // 读入文件内容
    DWORD dwSize = file.GetLength();
    HGLOBAL hMem
= ::GlobalAlloc( GMEM_MOVEABLE, dwSize );
    LPVOID lpBuf
= ::GlobalLock( hMem );
    file.ReadHuge( lpBuf, dwSize );
    file.Close();
    ::GlobalUnlock( hMem );

    IStream
* pStream = NULL;
    IPicture
* pPicture = NULL;
   
   
// 由 HGLOBAL 得到 IStream,参数 TRUE 表示释放 IStream 的同时,释放内存
    hr = ::CreateStreamOnHGlobal( hMem, TRUE, &pStream );
    ASSERT ( SUCCEEDED(hr) );
   
    hr
= ::OleLoadPicture( pStream, dwSize, TRUE, IID_IPicture, ( LPVOID * )&pPicture );
    ASSERT(hr
==S_OK);
   
   
long nWidth,nHeight;  // 宽高,MM_HIMETRIC 模式,单位是0.01毫米
    pPicture->get_Width( &nWidth );    //
    pPicture->get_Height( &nHeight );  //
   
   
////////原大显示//////
    CSize sz( nWidth, nHeight );
    pDC
->HIMETRICtoDP( &sz );  // 转换 MM_HIMETRIC 模式单位为 MM_TEXT 像素单位
    pPicture->Render(pDC->m_hDC,0,0,sz.cx,sz.cy,
       
0,nHeight,nWidth,-nHeight,NULL);
       
   
////////按窗口尺寸显示////////
//    CRect rect;    GetClientRect(&rect);
//    pPicture->Render(pDC->m_hDC,0,0,rect.Width(),rect.Height(),
//        0,nHeight,nWidth,-nHeight,NULL);

   
if ( pPicture ) pPicture->Release();// 释放 IPicture 指针
    if ( pStream ) pStream->Release();  // 释放 IStream 指针,同时释放了 hMem
   
    ::CoUninitialize();
}
posted on 2008-06-24 17:15 幽幽 阅读(563) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2010年2月>
31123456
78910111213
14151617181920
21222324252627
28123456
78910111213

常用链接

留言簿(6)

随笔分类(35)

随笔档案(51)

文章分类(3)

文章档案(3)

相册

我的链接

搜索

  •  

最新评论

阅读排行榜

评论排行榜