Здравствуйте, Alter_, Вы писали:
A_>А как именно она не работает ? что возвращает ?
A_>И что сказал GetlastError() ?
A_>и еще можно попробовать WideCharToMultiByte() с WC_COMPOSITECHECK и CP_OEMCP или CP_ACP
PK>>Как можно определить позицую курсора в консоли и проводить над ним разные операции?
A_>GetConsoleCursorInfo() и SetConsoleCursorInfo()
A_>--
A_>Alter, http://alter.org.ua
Сама функция СharToOem работает, ошибку не возвращает! После того как эта функция конвертнула выполняется функция WriteConsoleOutputCharacter. Результатом ее выполения явлется то, что она половину русского алфавита не выдает оставляет пробелы. Попробывал функцию WideCharToMultiByte() с разными параметрами. Выдает одни вопросительные знак.
Может я, чтото не так делаю? Вот пример функции:
void TypeColorText(char lpszStringSRC[256], WORD wColors, int CorX = 0, int CorY = 0)
{
HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD cWritten;
BOOL fSuccess;
COORD coord;
int iResult;
char lpszString[256];
iResult = WideCharToMultiByte(CP_ACP,
WC_COMPOSITECHECK,
(LPCWSTR) lpszStringSRC,
-1,
lpszString,
256,
NULL,
NULL);
if(iResult == ERROR_INSUFFICIENT_BUFFER) MyError("ERROR_INSUFFICIENT_BUFFER\n");
if(iResult == ERROR_INVALID_FLAGS) MyError("ERROR_INVALID_FLAGS\n");
if(iResult == ERROR_INVALID_PARAMETER) MyError("ERROR_INVALID_PARAMETER\n");
/*CharToOem(lpszStringSRC, lpszString);*/
coord.X = CorX;
coord.Y = CorY;
fSuccess = WriteConsoleOutputCharacter(
hOutput,
lpszString,
lstrlen(lpszString),
coord,
&cWritten);
if (!fSuccess)
MyError("\t\nWriteConsoleOutputCharacter\n");
for (;coord.X < CorX + lstrlen(lpszString); coord.X++)
{
fSuccess = WriteConsoleOutputAttribute(
hOutput,
&wColors,
1,
coord,
&cWritten);
}
if (! fSuccess)
MyError("\t\nWriteConsoleOutputAttribute\n");
}