2014-10-29 64 views
0

我想確定正確的類型使用我的C++(Win32)應用程序接收返回一個C#DateTime.ToUniversalTime()值的API調用返回。C#DateTime.ToUniversalTime()在C + +中Win32

所以我的問題是: 我應該使用U64來存儲從c#函數返回的值..或什麼是正確的C++類型使用。

客戶端C++環境下使用利用COM

沒有CLR
的Win32 + DirectX的,沒有WinRT中,沒有CLI

+0

自定義CLR主機? COM? C++/CLI? WinRT的?與託管代碼互操作的方式不止一種,您必須明確。發佈一個片段。 – 2014-10-29 22:41:47

+0

Win32。 DirectX利用COM - 沒有CLR,沒有WinRT! – 2014-10-30 14:20:46

回答

1

什麼是有問題的API實際回報? ToUniversalTime方法返回另一個DateTime對象。如果您想使用提供Win32 API,你需要將其轉換爲一個FILETIME結構是這樣的:

ULARGE_INTEGER uli; 
uli.QuadPart = DateTime->ToFileTime(); 

FILETIME ft; 
ft.dwLowDateTime = uli.LowPart; 
ft.dwHighDateTime = uli.HighPart; 

然後,您可以轉換FILETIMESYSTEMTIME正常:

SYSTEMTIME st; 
FileTimeToSystemTime(&ft, &st); 

如果API方法返回long long或類似的,您可以簡單地將其複製到上面顯示的uli.QuadPart字段中。

+0

FileTime不是日期時間。我需要返回DateTime ....我的客戶不只是C++應用程序。我在想什麼? – 2014-10-29 22:25:54

+0

@SDDeveloper如果API正在返回.NET DateTime對象,那麼您別無選擇,只能使用該對象。這個答案只是給你一個選擇,一旦你有了它,該怎麼做。 – 2014-10-29 22:36:47

+0

@SDDeveloper:您的問題意味着您在Win32應用程序中獲得了DateTime對象,並且想知道如何處理它。如果這不是你問的問題,你需要提供更多的細節。 – 2014-10-29 22:45:25