使用ATL库中的CImage类加载JPG图片作为对话框背景

129 阅读1分钟

这下有了CImage类,处理其他类型的图片不再寻找第三方类库了。加载到对话框背景的代码如下:\

 
 

      
  //
  从资源里载入背景JPEG图片
  
      HRSRC hRsrc
  =
  ::FindResource(AfxGetResourceHandle(),
        MAKEINTRESOURCE(IDR_JPG1),
        _T(
  "
  JPG
  "
  ));
    
  if
  (hRsrc
  !=
  NULL)
    
  ...
  {
        HGLOBAL hImgData=::LoadResource(AfxGetResourceHandle(),hRsrc);
        if(hImgData==NULL)
        ...{
            ::FreeResource(hImgData);
        }
        else
        ...{
            LPVOID lpVoid = ::LockResource(hImgData);
            LPSTREAM pStream=NULL;
            DWORD dwSize = ::SizeofResource(AfxGetResourceHandle(), hRsrc);
            HGLOBAL hNew = ::GlobalAlloc(GHND, dwSize);
            LPBYTE lpByte = (LPBYTE)::GlobalLock(hNew);
            ::memcpy(lpByte, lpVoid, dwSize);
            GlobalUnlock(hNew);
            HRESULT ht = CreateStreamOnHGlobal(hNew, TRUE, &pStream);
            if( ht != S_OK )
            ...{
                //ASSERT( FALSE );
                GlobalFree(hNew);
            }
            else
            ...{
                m_imgBK.Load(pStream);
                GlobalFree(hNew);
            }
            ::FreeResource(hImgData);    
        }
    }
  
    
    
  //
  m_imgBK.Load("hh.jpg"); 
  //
  这个方法可以载入文件
 
处理消息OnEraseBkgnd,
BOOL CDlgCfg::OnEraseBkgnd(CDC* pDC)
{
 m_imgBK.Draw(pDC->GetSafeHdc(),0,0,500,500,0,900,500,500);
 return TRUE; 
 //CDialog::OnEraseBkgnd(pDC);
}