Dieser Code unten funktioniert nicht richtig, da mein MFC-Programm in Unicode-Umgebung ist.Wie mache ich :: WriteFile Arbeit in UNICODE Umstand?
::WriteFile(hFile, TEXT("123456"), lstrlenW(TEXT("123456")), &dwByte, nullptr);
::CloseHandle(hFile);
Das Ergebnis ist "123", die "123456"
Ich fand im Internet sein sollte, die Unicode-BOM diese lösen könnte. Also habe ich meinen Code geändert, um so weiter unten zu gehen.
WORD Unicode = 0xfeff; // UNICODE BOM
::WriteFile(hFile, &Unicode, 2, &dwByte, nullptr);
::WriteFile(hFile, TEXT("123456"), lstrlenW(TEXT("123456")), &dwByte, nullptr);
::CloseHandle(hFile);
Es macht jedoch keinen Unterschied.
Scheint wie es ist ein einfaches Problem, aber ich bin verloren auf der Suche nach der Lösung für diese.
Jede Idee wäre mehr als willkommen. Danke im Voraus.
ich dies zu schätzen wissen. Vielen Dank. –
'TEXT()' arbeitet mit 'char' oder' wchar_t', abhängig davon, ob UNICODE definiert ist, aber 'lstrlenW()' nur für 'wchar_t' gilt. Wenn der Code in beiden Umgebungen arbeiten soll, verwenden Sie stattdessen 'lstrlen()' und 'sizeof (TCHAR)', zB: 'WriteFile (hFile, TEXT (" 123456 "), lstrlen (TEXT (" 123456 ")) * sizeof (TCHAR), ...) ' –
@RemyLebeau - Richtig wieder ... netter! –