void SetBackGround(CString &backPath)
{
//在设置背景以前需要通过修改注册表,使壁纸拉伸显示
//=======================================
//修改注册表
HANDLE hKEY;//定义hKEY,在程序结束后需要关闭,本应该定义为HKEY,但是不知道为什么提示HKEY没有定义
//估计是头文件的问题,查MSDN发现typedef HANDLE HKEY
LPCTSTR data_set=_T("Control Panel\\Desktop");
long ret0=(::RegOpenKeyEx(HKEY_CURRENT_USER,data_set,0,KEY_WRITE,(PHKEY)&hKEY));//打开注册表,用于修改
if(ret0!=ERROR_SUCCESS)
{
AfxMessageBox(_T("注册表打开失败,请检查您是否有足够的权限"));
return;
}
CString cs=_T("0");
LPBYTE owner_set=CString_To_LPBYTE(cs);
long ret1=::RegSetValueEx((HKEY)hKEY,_T("TileWallpaper"),NULL,REG_SZ,owner_set,2);//修改注册表
if(ret1!=ERROR_SUCCESS)
{
AfxMessageBox(_T("注册表修改失败,请检查您是否有足够的权限"));
return;
}
cs=_T("2");
owner_set=CString_To_LPBYTE(cs);
ret1=::RegSetValueEx((HKEY)hKEY,_T("WallpaperStyle"),NULL,REG_SZ,owner_set,2);//修改注册表
if(ret1!=ERROR_SUCCESS)
{
AfxMessageBox(_T("注册表修改失败,请检查您是否有足够的权限"));
return;
}
SystemParametersInfo(SPI_SETDESKWALLPAPER,backPath.GetLength(),backPath.GetBuffer(backPath.GetLength()),//修改壁纸
SPIF_UPDATEINIFILE+SPIF_SENDWININICHANGE);
backPath.ReleaseBuffer();
}