65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.33/5 (2投票s)

2000 年 6 月 30 日

viewsIcon

98067

downloadIcon

458

一个辅助类,用于将用户设置存储在注册表中,类似于 MFC 的 CWinApp

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

WTL 是一个很棒的框架,可以用来构建小型、轻量级的应用程序,但我发现缺少 MFC 的一些有用的功能。其中之一就是在注册表中保存用户设置的能力。所以我制作了这个类,以避免手动调用注册表 API 的麻烦。你只需要将你的主用户界面类(你的框架窗口或视图)从 CAppSettings 派生,如下所示

class CMainFrame : public CAppSettings, CFrameWindowImpl<CMainFrame>, ...

之后,只需调用一次函数来指定你的设置将存储的键的名称,就可以开始了。你可以设置和检索字符串、DWORD 和结构体,它们可以存储在 HKEY_LOCAL_MACHINEHKEY_CURRENT_USER 下。在任何一种情况下,你的设置都将存储在 Software 的子键中。

函数

使用此函数指定设置的根键。通常,你希望使用类似“companyname\appname”的内容。

  • void SetRegKey(LPCTSTR lpszKey)

使用这些函数将值存储在注册表中。将 XXX 替换为“Machine”或“User”,具体取决于你希望将它们存储在 HKEY_LOCAL_MACHINEHKEY_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)

就是这样了!希望对你有所帮助。

© . All rights reserved.