6598|18

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何编程实现wince桌面背景更换 [复制链接]

高手们,问下一个问题
如何用编程实现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);
        }
编译能够通过,但是,更换不成功!       


哪位高手知道如何搞呢
此帖出自WindowsCE论坛

最新回复

::PostMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETDESKWALLPAPER, 0);  详情 回复 发表于 2009-12-18 10:26
点赞 关注
 

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你是到应用层更换吗?在ce驱动中改下.bib和.reg文件可以实现更换桌面背景
此帖出自WindowsCE论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
SystemParametersInfo的参数SPI_SETDESKWALLPAPER,在CE下是不被支持的。

通过定制系统时更改。
此帖出自WindowsCE论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
reg下可以搞定,打包即可。
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 1 楼 lllchr88 的回复:
你是到应用层更换吗?在ce驱动中改下.bib和.reg文件可以实现更换桌面背景
[/quote]

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


[quote]引用 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);
        }
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
[HKEY_CURRENT_USER\ControlPanel\Desktop]
        "wallpaper"="\\Windows\\myPic.jpg"

我直接改的platform.reg,成功的。
此帖出自WindowsCE论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 5 楼 feishanm 的回复:
[HKEY_CURRENT_USER\ControlPanel\Desktop]
"wallpaper"="\\Windows\\myPic.jpg"

我直接改的platform.reg,成功的。

改platform.reg需要重新编译一次
我是想通过直接修改注册表,然后使注册表生效
从而实现桌面背景更换
此帖出自WindowsCE论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 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);
        }

改了注册表,需要保存注册表,再重启试试。
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
注册表操作,注册表必须是HIVE
此帖出自WindowsCE论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 8 楼 91program 的回复:
注册表操作,注册表必须是HIVE


注册表是HIVE或者不是,跟我修改注册表应该没有多大的关系吧
因为机子不重新启动,他没重新加载注册表
此帖出自WindowsCE论坛
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

11
 
不重启,如何使修改后的东东生效呢!
此帖出自WindowsCE论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

12
 
觉得可以用事件对象
之前,我修改背光也是通过修改注册表实现的
此帖出自WindowsCE论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

13
 
        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);
        }

这是我修改背光的方法
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

14
 
问题自己解决,谢谢大家参与!!
结贴!
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

15
 
引用 13 楼 lan120576664 的回复:
问题自己解决,谢谢大家参与!!
结贴!


说说如何解决的吧,LZ!
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 14 楼 91program 的回复:
引用 13 楼 lan120576664 的回复:
问题自己解决,谢谢大家参与!!
结贴!


说说如何解决的吧,LZ!

修改注册表后
HKEY_CURRENT_USER\\ControlPanel\\Desktop
这个注册表
然后
对HWND_BROADCAST发送WM_SETTINGCHANGE消息
就行了
此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

17
 
谢谢兄弟指导,你们真好!
对HWND_BROADCAST发送WM_SETTINGCHANGE消息

此帖出自WindowsCE论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

18
 
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, NULL, (LPARAM)L"netui");
此帖出自WindowsCE论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

19
 
::PostMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETDESKWALLPAPER, 0);
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表