📄 siteuser.cpp
字号:
pEvent->result = pSurf->BltSubRects(m_pucBuffer,
m_pBitmapInfoHeader,
pExpose->pRegion,
pExpose->pRegion, 1.0, 1.0);
pSurf->Release();
if (SUCCEEDED(pEvent->result))
{
pEvent->handled = TRUE;
}
}
}
}
break;
default:
break;
}
// If we have not handled the event, then pass it
// on to the response interface
if (!pEvent->handled && m_pResponse)
{
m_pResponse->SiteUserHandleEvent(this, pEvent);
}
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::SetPropertyULONG32(const char* pName, ULONG32 ulVal)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pValues)
{
retVal = m_pValues->SetPropertyULONG32(pName, ulVal);
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::GetPropertyULONG32(const char* pName, REF(ULONG32) rulVal)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pValues)
{
retVal = m_pValues->GetPropertyULONG32(pName, rulVal);
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::GetFirstPropertyULONG32(REF(const char*) rpName, REF(ULONG32) rulVal)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pValues)
{
retVal = m_pValues->GetFirstPropertyULONG32(rpName, rulVal);
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::GetNextPropertyULONG32(REF(const char*) rpName, REF(ULONG32) rulVal)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pValues)
{
retVal = m_pValues->GetNextPropertyULONG32(rpName, rulVal);
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::SetPropertyBuffer(const char* pName, IHXBuffer* pVal)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pValues)
{
retVal = m_pValues->SetPropertyBuffer(pName, pVal);
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::GetPropertyBuffer(const char* pName, REF(IHXBuffer*) rpVal)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pValues)
{
retVal = m_pValues->GetPropertyBuffer(pName, rpVal);
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::GetFirstPropertyBuffer(REF(const char*) rpName, REF(IHXBuffer*) rpVal)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pValues)
{
retVal = m_pValues->GetFirstPropertyBuffer(rpName, rpVal);
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::GetNextPropertyBuffer(REF(const char*) rpName, REF(IHXBuffer*) rpVal)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pValues)
{
retVal = m_pValues->GetNextPropertyBuffer(rpName, rpVal);
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::SetPropertyCString(const char* pName, IHXBuffer* pVal)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pValues)
{
retVal = m_pValues->SetPropertyCString(pName, pVal);
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::GetPropertyCString(const char* pName, REF(IHXBuffer*) rpVal)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pValues)
{
retVal = m_pValues->GetPropertyCString(pName, rpVal);
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::GetFirstPropertyCString(REF(const char*) rpName, REF(IHXBuffer*) rpVal)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pValues)
{
retVal = m_pValues->GetFirstPropertyCString(rpName, rpVal);
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::GetNextPropertyCString(REF(const char*) rpName, REF(IHXBuffer*) rpVal)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pValues)
{
retVal = m_pValues->GetNextPropertyCString(rpName, rpVal);
}
return retVal;
}
STDMETHODIMP CSmilSiteUser::SetBackgroundColor(UINT32 ulBackgroundColor)
{
HX_RESULT retVal = HXR_OK;
m_ulBackgroundColor = ulBackgroundColor;
return retVal;
}
STDMETHODIMP_(UINT32) CSmilSiteUser::GetBackgroundColor()
{
return m_ulBackgroundColor;
}
STDMETHODIMP CSmilSiteUser::Close()
{
HX_RESULT retVal = HXR_OK;
if (m_pResponse)
{
m_pResponse->Release();
m_pResponse = NULL;
}
HX_RELEASE(m_pSite);
HX_RELEASE(m_pValues);
HX_VECTOR_DELETE(m_pszID);
HX_RELEASE(m_pErrorMessages);
HX_VECTOR_DELETE(m_pBitmapInfoHeader);
HX_VECTOR_DELETE(m_pucBuffer);
return retVal;
}
STDMETHODIMP_(UINT32) CSmilSiteUser::GetLastMediaEndOverrideTime()
{
return m_ulLastMediaEndOverrideTime;
}
STDMETHODIMP CSmilSiteUser::SetLastMediaEndOverrideTime(UINT32 ulTime)
{
m_ulLastMediaEndOverrideTime = ulTime;
return HXR_OK;
}
STDMETHODIMP CSmilSiteUser::Redraw()
{
HX_RESULT retVal = HXR_FAIL;
if (m_pSite)
{
// Get the current site size
HXxSize cSize = {0, 0};
m_pSite->GetSize(cSize);
// Create a damage rect
HXxRect cRect = {0, 0, cSize.cx, cSize.cy};
m_pSite->DamageRect(cRect);
m_pSite->ForceRedraw();
// Clear the return value
retVal = HXR_OK;
}
return retVal;
}
HX_RESULT CSmilSiteUser::SetupBuffer()
{
HX_RESULT retVal = HXR_FAIL;
if (m_pSite && m_pBitmapInfoHeader)
{
// Set the color we are going to blt
UINT32 ulColor = m_ulBackgroundColor;
// If we are a root, then force the
// background color to be non-transparent
if (m_bIsARoot)
{
ulColor &= 0x00FFFFFF;
}
// Get the site's current size
HXxSize cSize = {0, 0};
m_pSite->GetSize(cSize);
// Make sure the site has non-zero dimensions
if (cSize.cx > 0 && cSize.cy > 0)
{
// Do we need to allocate a buffer?
BOOL bAllocated = FALSE;
if (!m_pucBuffer ||
m_pBitmapInfoHeader->biWidth != cSize.cx ||
m_pBitmapInfoHeader->biHeight != cSize.cy)
{
UINT32 ulNumBytes = (UINT32) cSize.cx * cSize.cy * 4;
HX_VECTOR_DELETE(m_pucBuffer);
m_pucBuffer = new BYTE [ulNumBytes];
if (m_pucBuffer)
{
m_pBitmapInfoHeader->biWidth = cSize.cx;
m_pBitmapInfoHeader->biHeight = cSize.cy;
m_pBitmapInfoHeader->biSizeImage = ulNumBytes;
bAllocated = TRUE;
}
}
if (m_pucBuffer)
{
// Do we need to fill in the color?
if (bAllocated ||
m_ulLastBackgroundColor != ulColor)
{
// Fill in the buffer
UINT32 ulNumPix = (UINT32) cSize.cx * cSize.cy;
UINT32* pPix = (UINT32*) m_pucBuffer;
while (ulNumPix--)
{
*pPix++ = ulColor;
}
// Save this color
m_ulLastBackgroundColor = ulColor;
// Set the bitmap info header compression
m_pBitmapInfoHeader->biCompression = (ulColor & 0xFF000000 ? HX_ARGB : HX_RGB);
}
// Clear the return value
retVal = HXR_OK;
}
}
}
return retVal;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -