15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Transparent CAnimateCtrl on CDialog

Ian White -- ianw@mfltd.co.uk
Sunday, January 12, 1997

Environment: NT4.0 Win95 VC4.2b

Hi, I have a Dialog box with a Custom WM_PAINT. I draw a Dib on the =
background.

I want to play an AVI Using CAnimateCtrl, but have the background show =
through the AVI.
These seems to be possible using  ACS_TRANSPARENT as a flag
in the CAnimateCtrl Create, but this is not working. I still get the =
grey
dialog box background as a square behind the AVI.

The code to create and show the AVI Follows:

anyhelp would be appreciated.

*********************************
CMyDialog::OnInitDialog()

CAnimateCtrl *MyAnimate=3Dnew CAnimateCtrl;
rect.top=3D190;
rect.left=3D20;
rect.right=3D320;
rect.bottom=3D260;
MyAnimate->Create(ACS_CENTER | ACS_TRANSPARENT |ACS_AUTOPLAY | WS_CHILD
=
| WS_VISIBLE,rect,this,10005);
MyAnimate->Open("d:\\ani.avi");
************************************

My OnPaint Does the following :

*****************************
CPaintDC dc(this);
v_lpbfh =3D (LPBITMAPFILEHEADER)v_lpBitmap;
v_lpbih =3D (LPBITMAPINFOHEADER)(v_lpBitmap + sizeof(BITMAPFILEHEADER));
// draw our bitmap.
DrawDibDraw( v_hddBkgnd, dc,  dc.m_ps.rcPaint.left, 
dc.m_ps.rcPaint.top, dc.m_ps.rcPaint.right, dc.m_ps.rcPaint.bottom, 
 v_lpbih, v_lpBits,  dc.m_ps.rcPaint.left, dc.m_ps.rcPaint.top,
dc.m_ps.rcPaint.right, dc.m_ps.rcPaint.bottom,   0);=20

Thanks a lot

Ian

Ian

--
Ian White, Generic Setup Dev.
Email: ianw@mfltd.co.uk	Ext: 5309




Bing Hou -- hou@tfn.com
Tuesday, January 14, 1997

     Ian,
     
     The ACS_TRANSPARENT style draws the animation control using the 
     dialog's background color instead of the clip's background color. 
     That's why you saw the grey sqaure in the background. It doesn't take 
     into account the background you put there manually.
     
     You may try to subclass the animation control and handle WM_ERASEBKGND 
     message, where you draw the background one more time for the control.
     
     Good luck.
     
     Bing Hou
     hou@tfn.com
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       "Man is still the most extraordinary computer of all."
                                                   -JFK
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


______________________________ Reply Separator _________________________________
Subject: Transparent CAnimateCtrl on CDialog
Author:  Ian White  at Internet
Date:    1/12/97 11:03 PM


Environment: NT4.0 Win95 VC4.2b
     
Hi, I have a Dialog box with a Custom WM_PAINT. I draw a Dib on the = 
background.
     
I want to play an AVI Using CAnimateCtrl, but have the background show = 
through the AVI.
These seems to be possible using  ACS_TRANSPARENT as a flag
in the CAnimateCtrl Create, but this is not working. I still get the = 
grey
dialog box background as a square behind the AVI.
     
The code to create and show the AVI Follows:
     
anyhelp would be appreciated.
     
*********************************
CMyDialog::OnInitDialog()
     
CAnimateCtrl *MyAnimate=3Dnew CAnimateCtrl; 
rect.top=3D190;
rect.left=3D20;
rect.right=3D320;
rect.bottom=3D260;
MyAnimate->Create(ACS_CENTER | ACS_TRANSPARENT |ACS_AUTOPLAY | WS_CHILD 
=
| WS_VISIBLE,rect,this,10005);
MyAnimate->Open("d:\\ani.avi");
************************************
     
My OnPaint Does the following :
     
*****************************
CPaintDC dc(this);
v_lpbfh =3D (LPBITMAPFILEHEADER)v_lpBitmap;
v_lpbih =3D (LPBITMAPINFOHEADER)(v_lpBitmap + sizeof(BITMAPFILEHEADER)); 
// draw our bitmap.
DrawDibDraw( v_hddBkgnd, dc,  dc.m_ps.rcPaint.left, 
dc.m_ps.rcPaint.top, dc.m_ps.rcPaint.right, dc.m_ps.rcPaint.bottom, 
 v_lpbih, v_lpBits,  dc.m_ps.rcPaint.left, dc.m_ps.rcPaint.top,
dc.m_ps.rcPaint.right, dc.m_ps.rcPaint.bottom,   0);=20
     
Thanks a lot
     
Ian
     
Ian
     
--
Ian White, Generic Setup Dev.
Email: ianw@mfltd.co.uk Ext: 5309
     



Joao Marcos Melo Mendes -- jmmm@megamedia.pt
Wednesday, January 15, 1997

Hello, Ian,

On Sun, 12 Jan 1997, Ian White wrote:

> Environment: NT4.0 Win95 VC4.2b
> 
> Hi, I have a Dialog box with a Custom WM_PAINT. I draw a Dib on the =
> background.
> 
> I want to play an AVI Using CAnimateCtrl, but have the background show =
> through the AVI.
> These seems to be possible using  ACS_TRANSPARENT as a flag
> in the CAnimateCtrl Create, but this is not working. I still get the =
> grey
> dialog box background as a square behind the AVI.

This may or may not be what you're looking for, but have you tried 
intercepting the WM_ERASEBKGND message on your CAnimateCtrl?
Try something along these lines:

BOOL CMyAnimateCtrl::OnEraseBkgnd(CDC* pDC) 
{
	return FALSE;
}

Hope this helps...:)

                                        Joao Mendes
                                        MegaMedia, S.A.

"We're fools to make war on our brothers in arms." - Mark Knopfler

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2

mQBNAzKu3TgAAAECAL8+YSEFZ0XrlBMu9t2xDq3rhpWZoscP83VrX5MevAm3UOd6
fOtDKsJxsWugnVMexo50NfBjeWOHz5nA1b9hYx0ABRG0H0pvYW8gTWVuZGVzIDxq
bW1tQG1lZ2FtZWRpYS5wdD4=
=sspP
-----END PGP PUBLIC KEY BLOCK-----





| Вернуться в корень Архива |