-2

時間をレジストリに保存する方法はありますか? 私は MFC を使用しており、CTime オブジェクトを操作しています (これにより、CTimeSpan を使用して時差を計算できます) が、C++ ソリューションはどれも優れています。

4

1 に答える 1

1

通常はCTime::Serialize64、組み込みの MFC シリアル化を使用することをお勧めします。残念ながら、MFC ではデータをレジストリにシリアル化する簡単な方法はありません...

次の 2 つのオプションがあります。

Shaktal が彼のコメントで推奨しているルートを使用CTime::GetTimeして、_time64_t.

次に、その値をレジストリに書き込むことができます (ただし、最初に文字列に変換します) CWinApp::WriteProfileString。必要な場合は、 を使用CWinApp::GetProfileStringして文字列に読み戻し、 に変換して、を使用してその結果の値をインスタンス_time64_tに割り当てます。CTime=

または、インスタンスCTime::GetAsSystemTimeの日付と時刻を構造体として取得するために使用できます。その後、レジストリにそれを書き込むことができます.CTime64SYSTEMTIMESYSTEMTIMECWinApp::WriteProfileBinary

後で読み戻すには、レジストリ エントリをSYSTEMTIMEwithに読み込んで、適切なコンストラクタCWinApp::GetProfileBinaryに渡します。SYSTEMTIMECTime

これは退屈に思えるかもしれませんが、_time64_tそれを含むソリューションには、アプリケーションにとって重要ではない可能性がある (または、より可能性が高い) コーナーケース (夏時間、タイムゾーンなど) の処理方法にいくつかの利点があります。

例を挙げたいと思いますが、私はこれを iPhone で入力していますが、この種の操作には理想的なインターフェイスではありません。

于 2013-06-13T23:19:30.487 に答える