当SystemParametersInfo功能更改系统范围的设置时,系统会向所有顶级窗口发送WM_SETTINGCHANGE消息。只有SystemParametersInfo主叫方指定了SPIF_SENDCHANGE标志,系统才会发送此消息。
当系统参数更改时,应用程序可以向所有顶级窗口发送WM_SETTINGCHANGE。例如,您可以在调用WriteProfileString,WriteProfileSection或SetLocaleInfo函数后或在注册表中更改系统参数后发送此消息。
WM_SETTINGCHANGE消息与较旧的WM_WININICHANGE消息相同。
WM_SETTINGCHANGE
wParam = wFlag; //系统范围的参数标志
lParam = (LPARAM) (LPCTSTR) pszSection; //更改部分或注册表的名称
参数
【WFLAG】
价值【wParam中】.当系统发送消息作为SystemParametersInfo调用的结果时,此参数是一个标志,指示系统参数被更改。有关值的列表,请参阅SystemParametersInfo函数。
当应用程序发送消息时,此参数必须为NULL。
【pszMetrics】
价值【lParam的】.指向一个字符串的指针,指示包含已更改的系统参数的区域。例如,此字符串可以是注册表项的名称或WIN.INI文件中的部分名称。
该参数在确定哪个系统参数改变时不是特别有用。例如,当字符串是注册表名称时,它通常仅指示注册表中的叶节点,而不是整个路径。另外,一些应用程序将【lParam的】的消息发送到NULL。一般来说,当您收到此消息时,应检查并重新加载应用程序使用的任何系统参数设置。
返回值
如果处理该消息,返回零。
备注
要将WM_SETTINGCHANGE消息发送到所有顶级窗口,请使用【HWND】参数设置为HWND_BROADCAST的SendMessage功能。
对更改WIN.INI文件的函数的调用可能会映射到注册表。当WIN.INI文件和被更改的部分在注册表中在以下键下指定时,会发生此映射:
HKEY_LOCAL_MACHINE\软件\微软\
Windows NT\CurrentVersion\IniFileMapping
存储位置的更改对此消息的行为没有影响。
也可以看看
SendMessage, SetLocaleInfo, SystemParametersInfo, WM_WININICHANGE, WriteProfileSection, WriteProfileString