0
Когда я произнес от Ulong64 до значения cstring, усекается в 64 бит, может ли кто-нибудь помочь мне в этом?Значения CString усекаются в течение 64-битного литья
HMONITOR hmonitor64; // Hmonitor decl
hmonitor64 = (HMONITOR)0x0000000300290eaf;// initialize to big value
ULONG64 lmonitor64;
CString strMonitor64;
lmonitor64 = (ULONG64)hmonitor64; // typecasted to long
strMonitor64.Format(_T("%lu"), lmonitor64); // value gets truncated in cstring
Пожалуйста, форматировать исходный код. (Используйте кнопку «{}» редактора.) – Scheff
Без каких-либо исследований я бы предположил, что вы должны использовать ''% llu''. 'long' означает 32 бита в Windows/VC даже на 64-битных платформах. Таким образом, вы должны использовать 'long long unsigned' или (как и вы)' ULONG64'. – Scheff
Усечение также происходит в 32-битном коде. Вы просто не заметили, потому что 'HMONITOR' 32-битный в 32-битном коде. – IInspectable