Поделиться через


Преобразование строк

[Функция, связанная с этой страницей, MCI, является устаревшей функцией. Он был заменён MediaPlayer. MediaPlayer оптимизирован для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer вместо MCIпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

При использовании функции mciSendString все значения, передаваемые с помощью команды, и все возвращаемые значения являются текстовыми строками, поэтому приложению требуются процедуры преобразования для перевода из переменных в строки или обратно. В следующем примере извлекается исходный прямоугольник и преобразует возвращенную строку в координаты прямоугольника.

BOOL GetSourceRect(LPTSTR lpstrAlias, LPRECT lprc) 
{ 
    TCHAR achRetBuff[128]; 
    TCHAR achCommandBuff[128]; 

    int result;
    MCIERROR err;
 
    // Build the command string. 
    result = _stprintf_s(
        achCommandBuff, 
        TEXT("where %s source"), 
        lpstrAlias); 

    if (result == -1)
    {
        return FALSE;
    }
    
    // Clear the RECT.
    SetRectEmpty(lprc);
 
    // Send the MCI command. 
    err = mciSendString(
        achCommandBuff, 
        achRetBuff, 
        sizeof(achRetBuff), 
        NULL);

    if (err != 0)
    {
        return FALSE;
    }
        
    // The rectangle is returned as "x y dx dy". 
    // Translate the string into the RECT structure. 

    // Warning: This example omits error checking
    // for the _tcstok_s and _tstoi functions.
    TCHAR *p; 
    TCHAR *context;

    // Left.
    p = _tcstok_s(achRetBuff, TEXT(" "), &context);
    lprc->left = _tstoi(p);

    // Top.
    p = _tcstok_s(NULL, TEXT(" "), &context);
    lprc->top = _tstoi(p);

    // Right.
    p = _tcstok_s(NULL, TEXT(" "), &context);
    lprc->right = _tstoi(p);
    
    // Bottom.
    p = _tcstok_s(NULL, TEXT(" "), &context);
    lprc->bottom = _tstoi(p);

    return TRUE;
}
 

Заметка

структуры RECT обрабатываются иначе в MCI, чем в других частях Windows; в MCI правый элемент содержит ширину прямоугольника, а нижний элемент содержит его высоту. В строковом интерфейсе прямоугольник указывается как X1, Y1, X2и Y2. Координаты X1 и Y1 указывают левый верхний угол прямоугольника, а координаты X2 и Y2 указать ширину и высоту.