mciSendString возвращает один символ
Хочу вернуть время и текущую позицию музыки, воспроизводимой с помощью mciSendString в С++
char* pos = new char[128];
char* dur = new char[128];
mciSendString(L"status MY_SND position", (LPWSTR)pos, 128, 0);
mciSendString(L"status MY_SND length", (LPWSTR)dur, 128, 0);
cout << pos << endl << dur << endl;
clear();
continue;
Но программа выводит лишь один символ размера аудио. Например, в моём случае музыка на 5 минут (300 секунд), в результате dur хранит в себе лишь один символ 3.
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
mciSendString в режиме Unicode (который, судя по L"status MY... вы и используете) в качестве второго параметра использует массив широких символов.
то есть вам надо использовать буфер типа wchar_t*, создавая его статически или динамически, например,
wchar_t* dur = new wchar_t[128];
mciSendString(L"status MY_SND length", dur, 128, 0);
Что именно содержится в буфере (если, конечно, функция возвращает нулевое значчение, говорящее о том, что она завершилась успешно) - зависит от переданной команды.