Esempio n. 1
0
	void ProcessTimerTick(void)
	{
		if (m_visible && m_img && --m_counter <= 0) {
			m_nFramePosition = m_img->SelectNextFrame(m_nFramePosition);
			long frtm = m_img->GetFrameDelay();
			m_counter = frtm / 10 + ((frtm % 10) >= 5);

			switch (m_animtype) {
			case animStdOle:
				if (m_allowAni) SendOnViewChange();
				else {
					m_visible = false;
					UnloadSmiley();
				}
				m_allowAni = false;
				break;

			case animDrctRichEd:
				DrawOnRichEdit();
				break;

			case animHpp:
				DrawOnHPP();
				break;
			}
		}
	}
Esempio n. 2
0
//
// IViewObject members
//
HRESULT ISmileyBase::SetAdvise(DWORD aspect, DWORD advf, IAdviseSink* pAdvSink) 
{
	if (aspect != DVASPECT_CONTENT) return DV_E_DVASPECT;
	m_advf = advf;
	if (m_spAdviseSink) m_spAdviseSink->Release();
	m_spAdviseSink = pAdvSink;
	if (advf & ADVF_PRIMEFIRST) SendOnViewChange();
	return S_OK;
}
Esempio n. 3
0
inline HRESULT CGifSmileyCtrl::FireViewChange()
{
	if (m_bInPlaceActive)
	{
		// Active
		if (m_hWndCD != NULL)
			::InvalidateRect(m_hWndCD, NULL, m_bTransparent); // Window based
		else if (m_bWndLess && m_spInPlaceSite != NULL)
			m_spInPlaceSite->InvalidateRect(NULL, m_bTransparent); // Windowless
	}
	else if (!m_hwndParent)
	{
		SendOnViewChange(DVASPECT_CONTENT);
	}
	else
	{ 

		COLORREF oldColor=m_clrBackColor;
		BOOL     fOldTransparent= m_bTransparent;
		HWND     hwndOld=m_hwndParent; 
		FVCNDATA_NMHDR nmhdr={0};

		nmhdr.cbSize=sizeof(FVCNDATA_NMHDR);
		nmhdr.hwndFrom=hwndOld;
		nmhdr.code=NM_FIREVIEWCHANGE;
		nmhdr.clrBackground=oldColor;
		nmhdr.fTransparent=fOldTransparent;
		nmhdr.bAction= m_bPaintValid ? (fOldTransparent ? FVCA_INVALIDATE : FVCA_DRAW ) : FVCA_SENDVIEWCHANGE;
		nmhdr.rcRect=m_rectPos;
		//SendPrePaintEvent
		nmhdr.bEvent=FVCN_PREFIRE;
		
		//set members
		m_clrBackColor=nmhdr.clrBackground;
		m_bTransparent=nmhdr.fTransparent;
		m_hwndParent=nmhdr.hwndFrom;
		switch (nmhdr.bAction)
		{
		case FVCA_SKIPDRAW:
			AdvanceFrame();
			break;
		case FVCA_SENDVIEWCHANGE:
			SendOnViewChange(DVASPECT_CONTENT);
			::SendMessage(m_hwndParent, WM_PAINT, NULL, NULL);
			break;
		case FVCA_INVALIDATE:
			::InvalidateRect(m_hwndParent, &(nmhdr.rcRect), FALSE);
			break;
		case FVCA_DRAW:
		case FVCA_CUSTOMDRAW:
			ATL_DRAWINFO di;
			memset(&di,0,sizeof(ATL_DRAWINFO));
			di.cbSize=sizeof(ATL_DRAWINFO);
			di.dwDrawAspect=DVASPECT_CONTENT;
			if (nmhdr.bAction==FVCA_DRAW)
				di.hdcDraw=::GetWindowDC(m_hwndParent);
			else
				di.hdcDraw=nmhdr.hDC;
			RECTL rcl={nmhdr.rcRect.left, nmhdr.rcRect.top, nmhdr.rcRect.right, nmhdr.rcRect.bottom};
			di.prcBounds=&rcl;
			OnDrawSmiley(di,nmhdr.bAction==FVCA_DRAW);
			if (nmhdr.bAction==FVCA_DRAW)
				::ReleaseDC(m_hwndParent, di.hdcDraw);
			break;
		}
		//SendPostPaintEvent
		nmhdr.bEvent=FVCN_POSTFIRE;
		
		//restore members
		m_clrBackColor=oldColor;
		m_bTransparent=fOldTransparent;
		m_hwndParent=hwndOld;
	}

	return S_OK;
}