-2

有没有办法可以在注册表中存储时间?我正在使用 MFC 并使用 CTime 对象(这允许我使用 CTimeSpan 来计算时间差),但任何 c++ 解决方案都会很棒。

4

1 回答 1

1

通常,我会建议您使用CTime::Serialize64内置的 MFC 序列化。唉,MFC 没有提供将数据序列化到注册表的简单方法......

你有两个选择:

您可以使用 Shaktal 在他的评论中推荐的路线CTime::GetTime来取回_time64_t.

然后,您可以将该值写入注册表(但首先将其转换为字符串)CWinApp::WriteProfileString。当您需要它时,将其读回字符串,使用CWinApp::GetProfileString以获取字符串,将其转换为 a_time64_t并将结果值分配给您的CTime实例,使用=.

或者,您可以使用CTime::GetAsSystemTimeCTime64实例中的日期和时间作为SYSTEMTIME结构返回。然后,您可以SYSTEMTIME使用CWinApp::WriteProfileBinary.

稍后要读回它,只需将注册表项读入SYSTEMTIMEwithCWinApp::GetProfileBinary并将 传递SYSTEMTIME给适当的CTime构造函数

尽管这可能看起来更乏味,但涉及_time64_t它的解决方案在处理极端情况(例如夏令时、时区等)方面具有一些优势,这可能(或更可能)对您的应用程序并不重要。

我会给你一个例子,但我是在 iPhone 上输入的,它不是这类事情的理想界面。

于 2013-06-13T23:19:30.487 回答