如何编程实现wince桌面背景更换

lan120576664 2009-09-14 06:47:12
高手们,问下一个问题
如何用编程实现wince桌面背景的更换
比如,更换为我指定位置上的那张图片。
以下是我在evc跑的代码
BOOL T=FALSE;
TCHAR bmpfile[]=L"sdmmc\\wince.bmp";

T=SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, bmpfile, SPIF_UPDATEINIFILE);

if(T==FALSE)
{
MessageBox(NULL,L"False",0,0);
}
编译能够通过,但是,更换不成功!


哪位高手知道如何搞呢
...全文
217 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
yudong54 2009-12-18
  • 打赏
  • 举报
回复
::PostMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETDESKWALLPAPER, 0);
yudong54 2009-12-18
  • 打赏
  • 举报
回复
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, NULL, (LPARAM)L"netui");
yudong54 2009-12-18
  • 打赏
  • 举报
回复
谢谢兄弟指导,你们真好!
对HWND_BROADCAST发送WM_SETTINGCHANGE消息

lan120576664 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 91program 的回复:]
引用 13 楼 lan120576664 的回复:
问题自己解决,谢谢大家参与!!
结贴!


说说如何解决的吧,LZ!
[/Quote]
修改注册表后
HKEY_CURRENT_USER\\ControlPanel\\Desktop
这个注册表
然后
对HWND_BROADCAST发送WM_SETTINGCHANGE消息
就行了
lan120576664 2009-09-15
  • 打赏
  • 举报
回复
HKEY hKey;
DWORD dwState=Lumin;
if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("ControlPanel\\Backlight"),0,0,&hKey))
{

RegSetValueEx(hKey,TEXT("BackLightLuminanceLevel"),0,
REG_DWORD, (BYTE*)&dwState,sizeof(DWORD));
RegCloseKey(hKey);
}
HANDLE hBL=CreateEvent(NULL,FALSE,FALSE,L"BacklightSet");
if(hBL)
{
SetEvent(hBL);
CloseHandle(hBL);
}

这是我修改背光的方法
lan120576664 2009-09-15
  • 打赏
  • 举报
回复
觉得可以用事件对象
之前,我修改背光也是通过修改注册表实现的
91program 2009-09-15
  • 打赏
  • 举报
回复
不重启,如何使修改后的东东生效呢!
lan120576664 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 91program 的回复:]
注册表操作,注册表必须是HIVE
[/Quote]

注册表是HIVE或者不是,跟我修改注册表应该没有多大的关系吧
因为机子不重新启动,他没重新加载注册表
91program 2009-09-15
  • 打赏
  • 举报
回复
注册表操作,注册表必须是HIVE
feishanm 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lan120576664 的回复:]


引用 3 楼 gooogleman 的回复:
reg下可以搞定,打包即可。

我试过动态修改reg,但是还是没有奏效
以下是我的代码,“MessageBox(NULL,L"OK",0,0)”这个对话框确实执行了
HKEY hKey;
TCHAR Ps[]=L"\\wince.bmp";
if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("ControlPanel\\Desktop"),0,0,&hKey))
{

RegSetValueEx(hKey,TEXT("Wallpaper"),0,
REG_SZ, (BYTE*)Ps,sizeof(Ps));
RegCloseKey(hKey);
}
HANDLE hBL=CreateEvent(NULL,FALSE,FALSE,L"Desktop");
if(hBL)
{
MessageBox(NULL,L"OK",0,0);
SetEvent(hBL);
CloseHandle(hBL);
}
[/Quote]
改了注册表,需要保存注册表,再重启试试。
lan120576664 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 feishanm 的回复:]
[HKEY_CURRENT_USER\ControlPanel\Desktop]
"wallpaper"="\\Windows\\myPic.jpg"

我直接改的platform.reg,成功的。
[/Quote]
改platform.reg需要重新编译一次
我是想通过直接修改注册表,然后使注册表生效
从而实现桌面背景更换
feishanm 2009-09-15
  • 打赏
  • 举报
回复
[HKEY_CURRENT_USER\ControlPanel\Desktop]
"wallpaper"="\\Windows\\myPic.jpg"

我直接改的platform.reg,成功的。
lan120576664 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lllchr88 的回复:]
你是到应用层更换吗?在ce驱动中改下.bib和.reg文件可以实现更换桌面背景
[/Quote]

我不想通过编译来更换图片
我是想通过编程实现系统桌面背景的更换


[Quote=引用 3 楼 gooogleman 的回复:]
reg下可以搞定,打包即可。
[/Quote]
我试过动态修改reg,但是还是没有奏效
以下是我的代码,“MessageBox(NULL,L"OK",0,0)”这个对话框确实执行了
HKEY hKey;
TCHAR Ps[]=L"\\wince.bmp";
if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("ControlPanel\\Desktop"),0,0,&hKey))
{

RegSetValueEx(hKey,TEXT("Wallpaper"),0,
REG_SZ, (BYTE*)Ps,sizeof(Ps));
RegCloseKey(hKey);
}
HANDLE hBL=CreateEvent(NULL,FALSE,FALSE,L"Desktop");
if(hBL)
{
MessageBox(NULL,L"OK",0,0);
SetEvent(hBL);
CloseHandle(hBL);
}
91program 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lan120576664 的回复:]
问题自己解决,谢谢大家参与!!
结贴!
[/Quote]

说说如何解决的吧,LZ!
lan120576664 2009-09-15
  • 打赏
  • 举报
回复
问题自己解决,谢谢大家参与!!
结贴!
gooogleman 2009-09-14
  • 打赏
  • 举报
回复
reg下可以搞定,打包即可。
91program 2009-09-14
  • 打赏
  • 举报
回复
SystemParametersInfo的参数SPI_SETDESKWALLPAPER,在CE下是不被支持的。

通过定制系统时更改。
lllchr88 2009-09-14
  • 打赏
  • 举报
回复
你是到应用层更换吗?在ce驱动中改下.bib和.reg文件可以实现更换桌面背景

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧