在C++ Builder中要实现桌布的自动更换功能,我认为主要两个关键点,其一既然要“自动”那就免不了要用到定时器,我们可以用Timer这个组件来完成,这个还好解决,第二个问题可能比较麻烦了,我们如何来设置桌布,好像BCB中并没有提供什么组件,那我们也就只好自力更生了,虽说本人只是一只菜鸟,但这个问题还是难不了我,它主要是用到了SystemParametersInfo 这个Windows API函数,它的声明如下:
BOOL SystemParametersInfo(
UINT
uiAction
,
// system parameter to query or set
UINT uiParam, // depends on action to be taken
PVOID pvParam, // depends on action to be taken
UINT fWinIni // user profile update flag
);
它是一个非常重量级的函数,主要用来设置或获得系统范围上的相关参数(如:我
正在介绍的“如何设置桌布”,还有如:系统字体,屏幕分辨率等),其实光从字
面上也能大概知道它的作用。如果只是简单的调用SystemParametersInfo函数的话,
问题就变得简单多了,但你要总不能只使用默认的桌布样式,所以在设置桌布之
前还应先设置好桌布的样式,比如:桌布的显示位置,是否填满桌面等,然后在
调用SystemParametersInfo函数,这个函数会根据注册表里的桌布样式设置情况来
设置实际的桌布样式。
与桌布样式有关的注册表设定:(位于HKEY_CURRENT_USER/Control Panel/Desktop键)