描述:
不能用SetWallpaper这个方法来设置.
这样设置只能先保存WEB页面.再当墙纸贴上去.
不知道 IActiveDesktop还有哪个函数可以直接设置....
解决方案1:
AfxOleInit();
HRESULT hr;
IActiveDesktop *pActiveDesktop;
COMPONENT compDesktopItem;
compDesktopItem.cpPos.dwHeight=100;
compDesktopItem.cpPos.dwWidth=100;
hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
IID_IActiveDesktop, (void**)&pActiveDesktop);
compDesktopItem.dwSize = sizeof(COMPONENT);
CString strSrc="http://sohu.com";
int unicodeLen=MultiByteToWideChar(CP_ACP,0,strSrc,-1,NULL,0);
wchar_t *pUnicode;
pUnicode=new wchar_t[unicodeLen+1];
memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP,0,strSrc,-1,(LPWSTR)pUnicode,unicodeLen);
wcscpy( compDesktopItem.wszSubscribedURL,pUnicode);
wchar_t *pUnicode1;
pUnicode1=new wchar_t[unicodeLen+1];
memset(pUnicode1,0,(unicodeLen+1)*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP,0,strSrc,-1,(LPWSTR)pUnicode1,unicodeLen);
wcscpy( compDesktopItem.wszSource,pUnicode1);
wchar_t *pUnicode2;
pUnicode2=new wchar_t[unicodeLen+1];
memset(pUnicode2,0,(unicodeLen+1)*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP,0,strSrc,-1,(LPWSTR)pUnicode2,unicodeLen);
wcscpy( compDesktopItem.wszFriendlyName,pUnicode2);//显示用的
COMPPOS cpPos1;
cpPos1.dwSize=sizeof(COMPPOS);
cpPos1.dwHeight=100;
cpPos1.dwWidth=100;
cpPos1.iLeft=200;
cpPos1.iTop=200;
cpPos1.fCanResize=TRUE;
cpPos1.fCanResizeX=TRUE;
cpPos1.fCanResizeY=FALSE;
cpPos1.izIndex=10010;
cpPos1.iPreferredLeftPercent=10;
cpPos1.iPreferredTopPercent=10;
compDesktopItem.cpPos=cpPos1;
compDesktopItem.dwID=0;
compDesktopItem.fChecked=TRUE;//FALSE就默认不开启
compDesktopItem.fDirty=TRUE;
compDesktopItem.fNoScroll=FALSE;
compDesktopItem.iComp />
///////////////////
pActiveDesktop->AddDesktopItem(&compDesktopItem,0);
//pActiveDesktop->ModifyDesktopItem(&compDesktopItem,COMP_TYPE_WEBSITE);修改
pActiveDesktop->ApplyChanges(AD_APPLY_ALL);
delete pUnicode;
delete pUnicode1;
delete pUnicode2;
::CoUninitialize();
呵呵
楼主给分吧!~
hr = CoCreateInstance ( CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
IID_IActiveDesktop, (void**) &pIAD );
if(!SUCCEEDED(hr)) return FALSE;
::MessageBox(NULL,"成功1","2",NULL);
hr = pIAD->GenerateDesktopItemHtml( pwszFileName,pcomp,dwReserved);
if(!SUCCEEDED(hr)) return FALSE;
------------------------------------------------------------------------------------------------------
hr = CoCreateInstance ( CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
IID_IActiveDesktop, (void**) &pIAD );
这句完后,hr的值写的很清楚,在这句之前你要先调用 CoInitialize();
记得最后结束时调用 CoUninitialize()