2012-10-10 130 views
3

如何存储稍后可以加载到我的应用程序中的设置?Win32应用程序设置

例如,我有一个编辑控件,用户可以更改字体,字体颜色和背景颜色。当用户改变这些时,我想保存它们,以便当用户再次打开应用程序时,字体和颜色将与它们留下的相同。

我曾经想过写入Windows注册表,但我不仅困惑于如何在那里保存字体(或者即使你可以做这样的事情),但我也有一个便携版本,可以是从闪存驱动器运行。有没有办法将这些设置保存到与可执行文件位于同一目录中的文件?如果是这样,我将如何去保存和加载这些?

如果没有办法使用设置文件来完成此操作,我如何使用Windows注册表执行此操作?

+0

如果你可以使用Boost库,你应该检讨['提振:: property_tree'(http://www.bo ost.org/doc/libs/1_44_0/doc/html/property_tree.html#boost_propertytree.intro)库。我从来没有用过这个,但似乎是你以后的样子。 – hmjd

回答

3

最好的办法海事组织将其存储在INI文件,例如,一个文件:app.ini

[AppSettings] 
fntBackground=255 255 0 
fntFace=Tahome 

[LoadDialog] 
... 

这是很容易把它写自己,你也可以找到在CodeProject准备班,我采取了快速搜索,发现这个:

http://www.codeproject.com/Articles/5401/CIni

看起来很有希望

+0

是的,看起来很有希望。现在,这可能是一个完整的问题,但可以说.ini文件在我的可执行文件的旁边,该文件位于'C:\ Program Files \ MyProgram'中,我将如何获得对它的写入?如果用户不能提供应用程序管理权限呢?我想仍然可以运行我的程序,但我想只是在更改设置时不保存设置。 –

+0

如果你没有这个问题,我可以不用回答这个问题,但是我真正想知道的一件事是:可以不用写一个int,bool或char到INI文件我为它写了一个'LOGFONT'结构?如果没有,我将不得不将每个'LOGFONT'结构的成员保存到一个不同的键,并以某种方式处理将'long'和'BYTE'转换为整数。 –

+1

在应用程序数据文件夹中存储设置,以在此处获取其路径:http://stackoverflow.com/questions/2899013/how-do-i-get-the-application-data-path-in-windows-using-c 。 – marcinj

2

如果您的应用程序被允许写入文件夹,那么您可以像许多Windows应用程序一样使用.ini文件。您可以读取和写入与GetPrivateProfile/WritePrivateProfile的API文件,e.g GetPrivateProfileInt

如果您使用的是一些框架,这是可能的,它也提供了友好的版本的API(如MFC提供CWinApp::GetProfileInt等)。

2

在Zdeslav Vojkovic说,阅读Windows配置信息的最简单方法是使用GetPrivateProfileString/WritePrivateProfileString函数。

但是,您会看到:注意此功能仅用于与基于16位Windows的应用程序兼容。应用程序应该在注册表中存储初始化信息现在已经过时并且经常被禁止。建议(但通常只是简单的方式)要求您使用XML files。然后你可以使用任何你喜欢的方法 - DOM,SAX,XMLLite

+0

SOM/SAX ... - 为什么复杂简单的事情? – marcinj

+0

这取决于要求。 – SChepurin