//Read Parameters from pPropBag given by MSIE Bool CGPAXPlugin::ReadParamString(LPPROPERTYBAG pPropBag, LPERRORLOG pErrorLog, WCHAR *name, char *buf, int bufsize) { VARIANT v; HRESULT hr; Bool retval=0; v.vt = VT_EMPTY; v.bstrVal = NULL; hr = pPropBag->Read(name, &v, pErrorLog); if(SUCCEEDED(hr)) { if(v.vt==VT_BSTR && v.bstrVal) { // USES_CONVERSION; // lstrcpyn(buf,OLE2T(v.bstrVal),bufsize); const u16 *srcp = (const u16 *) v.bstrVal; u32 len = gf_utf8_wcstombs(buf, bufsize, &srcp); if (len>=0) { buf[len] = 0; retval=1; } } VariantClear(&v); } return retval; }
STDMETHODIMP VLCPersistPropertyBag::Load(LPPROPERTYBAG pPropBag, LPERRORLOG pErrorLog) { HRESULT hr = _p_instance->onInit(); if( FAILED(hr) ) return hr; if( NULL == pPropBag ) return E_INVALIDARG; VARIANT value; V_VT(&value) = VT_BSTR; if( S_OK == pPropBag->Read(OLESTR("mrl"), &value, pErrorLog) ) { _p_instance->setMRL(V_BSTR(&value)); VariantClear(&value); } else { /* ** try alternative syntax */ V_VT(&value) = VT_BSTR; if( S_OK == pPropBag->Read(OLESTR("src"), &value, pErrorLog) ) { _p_instance->setMRL(V_BSTR(&value)); VariantClear(&value); } else { V_VT(&value) = VT_BSTR; if( S_OK == pPropBag->Read(OLESTR("filename"), &value, pErrorLog) ) { _p_instance->setMRL(V_BSTR(&value)); VariantClear(&value); } } } V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("autoplay"), &value, pErrorLog) ) { _p_instance->setAutoPlay(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } else { /* ** try alternative syntax */ V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("autostart"), &value, pErrorLog) ) { _p_instance->setAutoPlay(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } } V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("toolbar"), &value, pErrorLog) ) { _p_instance->setShowToolbar(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } SIZEL size = _p_instance->getExtent(); V_VT(&value) = VT_I4; if( S_OK == pPropBag->Read(OLESTR("extentwidth"), &value, pErrorLog) ) { size.cx = V_I4(&value); VariantClear(&value); } V_VT(&value) = VT_I4; if( S_OK == pPropBag->Read(OLESTR("extentheight"), &value, pErrorLog) ) { size.cy = V_I4(&value); VariantClear(&value); } _p_instance->setExtent(size); V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("autoloop"), &value, pErrorLog) ) { _p_instance->setAutoLoop(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } else { /* ** try alternative syntax */ V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("loop"), &value, pErrorLog) ) { _p_instance->setAutoLoop(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } } V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("mute"), &value, pErrorLog) ) { _p_instance->setMute(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("visible"), &value, pErrorLog) ) { _p_instance->setVisible(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } else { /* ** try alternative syntax */ V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("showdisplay"), &value, pErrorLog) ) { _p_instance->setVisible(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } } V_VT(&value) = VT_I4; if( S_OK == pPropBag->Read(OLESTR("volume"), &value, pErrorLog) ) { _p_instance->setVolume(V_I4(&value)); VariantClear(&value); } V_VT(&value) = VT_I4; if( S_OK == pPropBag->Read(OLESTR("starttime"), &value, pErrorLog) ) { _p_instance->setStartTime(V_I4(&value)); VariantClear(&value); } V_VT(&value) = VT_BSTR; if( S_OK == pPropBag->Read(OLESTR("baseurl"), &value, pErrorLog) ) { _p_instance->setBaseURL(V_BSTR(&value)); VariantClear(&value); } V_VT(&value) = VT_I4; if( S_OK == pPropBag->Read(OLESTR("backcolor"), &value, pErrorLog) ) { _p_instance->setBackColor(V_I4(&value)); VariantClear(&value); } else { /* ** try alternative syntax */ V_VT(&value) = VT_BSTR; if( S_OK == pPropBag->Read(OLESTR("bgcolor"), &value, pErrorLog) ) { long backcolor; if( swscanf(V_BSTR(&value), L"#%lX", &backcolor) ) { _p_instance->setBackColor(backcolor); } VariantClear(&value); } } V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("FullscreenEnabled"), &value, pErrorLog) ) { _p_instance->get_options().set_enable_fs(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } return _p_instance->onLoad(); };
STDMETHODIMP CSOActiveX::Load( LPPROPERTYBAG pPropBag, LPERRORLOG pErrorLog ) { IPropertyBag2* pPropBag2; HRESULT hr = pPropBag->QueryInterface( IID_IPropertyBag2, (void**)&pPropBag2 ); ATLASSERT( hr >= 0 ); if( !SUCCEEDED( hr ) ) return hr; unsigned long aNum; hr = pPropBag2->CountProperties( &aNum ); ATLASSERT( hr >= 0 ); if( !SUCCEEDED( hr ) ) return hr; PROPBAG2* aPropNames = new PROPBAG2[aNum]; unsigned long aReaded; hr = pPropBag2->GetPropertyInfo( 0, aNum, aPropNames, &aReaded ); ATLASSERT( hr >= 0 ); if( !SUCCEEDED( hr ) ) { delete[] aPropNames; return hr; } CComVariant* aVal = new CComVariant[aNum]; HRESULT* hvs = new HRESULT[aNum]; hr = pPropBag2->Read( aNum, aPropNames, NULL, aVal, hvs ); ATLASSERT( hr >= 0 ); if( !SUCCEEDED( hr ) ) { delete[] hvs; delete[] aVal; delete[] aPropNames; return hr; } USES_CONVERSION; for( unsigned long ind = 0; ind < aNum; ind++ ) { // all information from the 'object' tag is in strings if( aVal[ind].vt == VT_BSTR && !strcmp( OLE2T( aPropNames[ind].pstrName ), "src" ) ) { mCurFileUrl = wcsdup( aVal[ind].bstrVal ); } else if( aVal[ind].vt == VT_BSTR && !strcmp( OLE2T( aPropNames[ind].pstrName ), "readonly" ) ) { if( !strcmp( OLE2T( aVal[ind].bstrVal ), "true" ) ) { mbViewOnly = TRUE; } else { // the default value mbViewOnly = FALSE; } } } delete[] hvs; delete[] aVal; delete[] aPropNames; if( !mpDispFactory ) return hr; mbLoad = TRUE; Invalidate(); UpdateWindow(); return hr; }
STDMETHODIMP VLCPersistPropertyBag::Save(LPPROPERTYBAG pPropBag, BOOL fClearDirty, BOOL) { if( NULL == pPropBag ) return E_INVALIDARG; VARIANT value; VariantInit(&value); V_VT(&value) = VT_BOOL; V_BOOL(&value) = _p_instance->getAutoLoop()? VARIANT_TRUE : VARIANT_FALSE; pPropBag->Write(OLESTR("AutoLoop"), &value); VariantClear(&value); V_VT(&value) = VT_BOOL; V_BOOL(&value) = _p_instance->getAutoPlay()? VARIANT_TRUE : VARIANT_FALSE; pPropBag->Write(OLESTR("AutoPlay"), &value); VariantClear(&value); V_VT(&value) = VT_BOOL; V_BOOL(&value) = _p_instance->getShowToolbar()? VARIANT_TRUE : VARIANT_FALSE; pPropBag->Write(OLESTR("Toolbar"), &value); VariantClear(&value); SIZEL size = _p_instance->getExtent(); V_VT(&value) = VT_I4; V_I4(&value) = size.cx; pPropBag->Write(OLESTR("ExtentWidth"), &value); V_I4(&value) = size.cy; pPropBag->Write(OLESTR("ExtentHeight"), &value); V_VT(&value) = VT_BSTR; V_BSTR(&value) = SysAllocStringLen(_p_instance->getMRL(), SysStringLen(_p_instance->getMRL())); pPropBag->Write(OLESTR("MRL"), &value); VariantClear(&value); V_VT(&value) = VT_BOOL; V_BOOL(&value) = _p_instance->getVisible()? VARIANT_TRUE : VARIANT_FALSE; pPropBag->Write(OLESTR("Visible"), &value); VariantClear(&value); V_VT(&value) = VT_I4; V_I4(&value) = _p_instance->getVolume(); pPropBag->Write(OLESTR("Volume"), &value); VariantClear(&value); V_VT(&value) = VT_I4; V_I4(&value) = _p_instance->getStartTime(); pPropBag->Write(OLESTR("StartTime"), &value); VariantClear(&value); V_VT(&value) = VT_BSTR; V_BSTR(&value) = SysAllocStringLen(_p_instance->getBaseURL(), SysStringLen(_p_instance->getBaseURL())); pPropBag->Write(OLESTR("BaseURL"), &value); VariantClear(&value); V_VT(&value) = VT_I4; V_I4(&value) = _p_instance->getBackColor(); pPropBag->Write(OLESTR("BackColor"), &value); VariantClear(&value); V_VT(&value) = VT_BOOL; V_BOOL(&value) = _p_instance->get_options().get_enable_fs()? VARIANT_TRUE : VARIANT_FALSE; pPropBag->Write(OLESTR("FullscreenEnabled"), &value); VariantClear(&value); if( fClearDirty ) _p_instance->setDirty(FALSE); return S_OK; };