我想写程序设置自己的桌面,一定要将在程序中实现jpg到bmp的转换么?
windows下的api似乎只支持将一个bmp文件设置为桌面壁纸,
事实上windows自己将jpg文件设置为桌面的时候也是先将jpg转换为bmp后实现的
难到我的程序中必须要将jpg转换为bmp么?看了网上的好多页面,有很多实现的方法,但都用到GDI+
或者COM,或者一些其他我不懂甚至没听过的概念,我只想写一个小程序而已,不想要什么DLL文件。
可以实现么?就在VC里用SDK编程
问题点数:20、回复次数:6Top
1 楼atiansk2006(到中流击水, 浪遏飞舟)回复于 2006-06-02 12:54:52 得分 0
对于这个问题不是太了解,帮楼主顶一下.Top
2 楼haolix(獾猪搂主)回复于 2006-06-02 13:35:14 得分 0
有直接设置桌面的com接口,不是你是不是想用Top
3 楼booklove(纳海行云)回复于 2006-06-02 16:07:12 得分 0
jpg的解码是很复杂的
GDI+或者COM或者是FreeImage什么的用起来还是比较方便的
好像没有再简单的方法了Top
4 楼joey123()回复于 2006-06-02 16:51:01 得分 0
设置桌面壁纸的软件不是很多么?难道这些软件都用到很高的技术含量么?Top
5 楼ilikework(louhua)回复于 2006-06-07 17:16:53 得分 0
这个控件在2000/xp下能用。(2000的话,service pack包打得全一点)
IActiveDesktop *pActiveDesktop = NULL;
//Create an instance of the Active Desktop
hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
IID_IActiveDesktop, (void**)&pActiveDesktop);
//Insert code to call the IActiveDesktop methods
if(SUCCEEDED(hr))
{
COMPONENTSOPT compOptions;
compOptions.dwSize = sizeof(COMPONENTSOPT);
compOptions.fActiveDesktop = TRUE;
compOptions.fEnableComponents = TRUE;
pActiveDesktop->SetDesktopItemOptions(&compOptions, 0);
BSTR bstr = strPath.AllocSysString();
WALLPAPEROPT wpopt;
wpopt.dwSize = sizeof(WALLPAPEROPT);
wpopt.dwStyle = WPSTYLE_CENTER|WPSTYLE_STRETCH;
pActiveDesktop->SetWallpaper(bstr,0);
pActiveDesktop->SetWallpaperOptions(&wpopt,0);
pActiveDesktop->ApplyChanges(AD_APPLY_ALL);
::SysFreeString(bstr);
// Call the Release method
pActiveDesktop->Release();
bRet = TRUE;
}
else
{
//CString str;
//str.Format("CoCreateInstance error = %X",hr);
//AfxMessageBox(str);
}
Top
6 楼CUG122032(烫烫烫烫烫烫?烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫?烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫)回复于 2006-06-08 12:03:13 得分 0
http://blog.csdn.net/CUG122032Top




