Пытаюсь записать текст с помощью WriteFile. Латинские символы записываются, а вот русские с иероглифами.
_bstr_t Path = "D:\\S";
static HANDLE hFile;
DWORD dwWritten;
setlocale(LC_ALL,".1251");
wstring ТекстВыгрузки = (wstring)ТекстЗапроса;
hFile = CreateFile(Path + "\\Text1.txt", GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
WriteFile(hFile, ТекстВыгрузки, ТекстВыгрузки.Lenght(), &dwWritten, NULL );
CloseHandle(hFile);
28.06.13 23:23: Перенесено модератором из 'C/C++' — Кодт
FRT>Пытаюсь записать текст с помощью WriteFile. Латинские символы записываются, а вот русские с иероглифами.
FRT>_bstr_t Path = "D:\\S";
FRT>static HANDLE hFile;
FRT>DWORD dwWritten;
FRT>setlocale(LC_ALL,".1251");
FRT>wstring ТекстВыгрузки = (wstring)ТекстЗапроса;
FRT>hFile = CreateFile(Path + "\\Text1.txt", GENERIC_READ | GENERIC_WRITE,
FRT>0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
FRT>WriteFile(hFile, ТекстВыгрузки, ТекстВыгрузки.Lenght(), &dwWritten, NULL );
FRT>CloseHandle(hFile);
Офигеть! Вот это код!

Ну да ладно.
Ты же записываешь фактически только половину юникодовой строки. length() кол-во символов а WriteFile оперирует байтами.
locale вообще никак не влияет.
И определись самое главное в какой кодировке тебе нужно выводить текст в файл: юникодовй или win-1251.