HRESULT CResizableImage::Create(LPPICTURE &pImage, const LPSIZE pRealSize) { _ASSERTE(m_pImage==NULL); HRESULT hr = S_OK; if(pImage!=NULL) hr = pImage->QueryInterface(IID_IPicture,(void**)&m_pImage); if(SUCCEEDED(hr)) { m_pImage->get_Width(&m_ImageSize.cx); m_pImage->get_Height(&m_ImageSize.cy); if(pRealSize) { memcpy(&m_RealSize,pRealSize,sizeof(SIZE)); //PixelToHiMetric(&m_RealSize,&m_RealSize); } else { m_pImage->get_Width(&m_RealSize.cx); m_pImage->get_Height(&m_RealSize.cy); HiMetricToPixel(&m_RealSize,&m_RealSize); } } return hr; }
BOOL CPictureObj::Create(IStream *pStream, long x, long y, long cx, long cy) { ASSERT(pStream != NULL); ASSERT(m_pPicture == NULL); BOOL bResult = FALSE; LPPICTURE pic = NULL; HRESULT hr = ::OleLoadPicture(pStream, 0, TRUE, IID_IPicture, (void**)&pic); if(SUCCEEDED(hr) && pic != NULL) { m_pPicture = new CResizableImage; m_pPicture->Create(pic); this->x = x; this->y = y; if(cx > 0 && cy > 0) { this->cx = cx; this->cy = cy; } else { pic->get_Width(&m_RealSize.cx); pic->get_Height(&m_RealSize.cy); HiMetricToPixel(&m_RealSize, &m_RealSize); this->cx = m_RealSize.cx; this->cy = m_RealSize.cy; } pic->Release(); bResult = TRUE; } return bResult; }
HRESULT ISmileyBase::SetExtent(DWORD dwDrawAspect, SIZEL* psizel) { if (dwDrawAspect != DVASPECT_CONTENT) return E_FAIL; if (psizel == NULL) return E_POINTER; HiMetricToPixel(psizel, &m_sizeExtent); m_sizeExtentHiM = *psizel; return S_OK; }