windows-nt/Source/XPSP1/NT/multimedia/dshow/mfvideo/tvplayer/msmfcnt/msmfimg.cpp

125 lines
4.6 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*************************************************************************/
/* Copyright (C) 1999 Microsoft Corporation */
/* File: MSMFImg.cpp */
/* Description: Implementation of CMSMFImg Static Image class */
/* Author: David Janecek */
/*************************************************************************/
#include "stdafx.h"
#include "MSMFCnt.h"
#include "MSMFImg.h"
/////////////////////////////////////////////////////////////////////////////
// CMSMFImg
/*************************************************************************/
/* Function: CMSMFImg */
/*************************************************************************/
CMSMFImg::CMSMFImg(){
m_pBackBitmap = new CBitmap;
Init();
}/* end of function CMSMFSldr */
/*************************************************************************/
/* Function: Init */
/* Description: Initializes variable states. */
/*************************************************************************/
void CMSMFImg::Init(){
m_blitType = DISABLE;
m_clrBackColor = ::GetSysColor(COLOR_BTNFACE);
#if 0 // used for getting the windowed case working DJ
m_bWindowOnly = TRUE;
#endif
}/* end of function Init */
/*************************************************************************/
/* Function: ~CMSMFImg */
/* Description: Cleanup the stuff we allocated here rest will be done */
/* in the button destructor. */
/*************************************************************************/
CMSMFImg::~CMSMFImg(){
delete m_pBackBitmap;
Init();
}/* end of function CMSMFSldr */
/*************************************************************************/
/* Function: OnDraw */
/* Description: Does the basic drawing */
/* First draws the background the the thumb at the specific position. */
/*************************************************************************/
HRESULT CMSMFImg::OnDraw(ATL_DRAWINFO& di){
HRESULT hr = S_OK;
BOOL bRet = TRUE;
HDC hdc = di.hdcDraw;
RECT rcClient = *(RECT*)di.prcBounds;
// DRAW THE BACKGROUND
if (!m_pBackBitmap->IsEmpty()){
bRet = m_pBackBitmap->PaintTransparentDIB(hdc, NULL,
&rcClient, m_blitType);
}
else {
COLORREF clr;
::OleTranslateColor (m_clrBackColor, m_pBackBitmap->GetPal(), &clr);
HBRUSH hbrBack = ::CreateSolidBrush(clr);
::FillRect(hdc, &rcClient, hbrBack);
::DeleteObject(hbrBack);
}/* end of if statement */
return (hr);
}/* end of function OnDraw */
/*************************************************************************/
/* Function: PutImage */
/* Description: Sets the image of the background. */
/*************************************************************************/
HRESULT CMSMFImg::PutImage(BSTR strFilename){
HRESULT hr = S_OK;
m_bstrBackFilename = strFilename;
bool fGrayOut = false;
hr = m_pBackBitmap->PutImage(strFilename, m_hRes, GetUnknown(),fGrayOut ,m_blitType);
if(FAILED(hr)){
return(hr);
}/* end of if statement */
InvalidateRgn(); // our helper function
return(hr);
}/* end of function PutImage */
/*************************************************************************/
/* Function: get_Image */
/*************************************************************************/
STDMETHODIMP CMSMFImg::get_Image(BSTR *pstrFilename){
*pstrFilename = m_bstrBackFilename.Copy();
return S_OK;
}/* end of function get_Image */
/*************************************************************************/
/* Function: put_Image */
/*************************************************************************/
STDMETHODIMP CMSMFImg::put_Image(BSTR strFilename){
return (PutImage(strFilename));
}/* end of function put_BackStatic */
/*************************************************************************/
/* End of file: MSMFImg.cpp */
/*************************************************************************/