适用于 ATL/WTL 项目的用户设置类






4.33/5 (2投票s)
2000 年 6 月 30 日

98067

458
一个辅助类,用于将用户设置存储在注册表中,类似于 MFC 的 CWinApp
适用于 ATL/WTL 项目的用户设置类
WTL 是一个很棒的框架,可以用来构建小型、轻量级的应用程序,但我发现缺少 MFC 的一些有用的功能。其中之一就是在注册表中保存用户设置的能力。所以我制作了这个类,以避免手动调用注册表 API 的麻烦。你只需要将你的主用户界面类(你的框架窗口或视图)从 CAppSettings 派生,如下所示
class CMainFrame : public CAppSettings, CFrameWindowImpl<CMainFrame>, ...
之后,只需调用一次函数来指定你的设置将存储的键的名称,就可以开始了。你可以设置和检索字符串、DWORD 和结构体,它们可以存储在 HKEY_LOCAL_MACHINE
或 HKEY_CURRENT_USER
下。在任何一种情况下,你的设置都将存储在 Software
的子键中。
函数
使用此函数指定设置的根键。通常,你希望使用类似“companyname\appname”的内容。
- void SetRegKey(LPCTSTR lpszKey)
使用这些函数将值存储在注册表中。将 XXX 替换为“Machine”或“User”,具体取决于你希望将它们存储在 HKEY_LOCAL_MACHINE
或 HKEY_CURRENT_USER
下。在下面的每个函数中,lpszSection
是将添加到你在 SetRegKey
中指定的字符串的进一步子键的名称。因此,整个键路径将如下所示:[HKLM / HKCU]\Software\keyname\section name\value
- BOOL WriteXXXProfileDword(LPCTSTR lpszSection, LPCTSTR lpszEntry, DWORD dwVal)
- BOOL WriteXXXProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszVal)
- template <class T> BOOL WriteXXXProfileStruct(LPCTSTR lpszSection, LPCTSTR lpszEntry, T& obj)
使用这些函数从注册表中检索一个值,或者如果它不存在则检索一个默认值。用于存储用户定义结构的函数无法检索默认值,并且仅返回 TRUE 或 FALSE 以指示调用是否成功。
- DWORD GetXXXProfileDword(LPCTSTR lpszSection, LPCTSTR lpszEntry, DWORD dwDefault = 0)
- CString GetXXXProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszDefault = NULL)
- template <class T> BOOL GetXXXProfileStruct(LPCTSTR lpszSection, LPCTSTR lpszEntry, T& obj)
就是这样了!希望对你有所帮助。