文字列の変換

[このページに関連付けられている機能 MCI は、従来の機能です。 MediaPlayer に置き換わりました。 MediaPlayer は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能な場合は MCI ではなく MediaPlayer を使用することを強くお勧めします。 Microsoft は、従来の 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 では、 右側 のメンバーには四角形の幅が含まれており、 下部 のメンバーには高さが含まれます。 文字列インターフェイスでは、四角形は X1Y1X2Y2 として指定されます。 座標 X1Y1 は四角形の左上隅を指定し、座標 X2Y2 は幅と高さを指定します。