Converting
Strings
When you use
the string interface, all values passed with the command and all return values
are text strings, so your application needs conversion routines to translate
from variables to strings or back again. The following example retrieves the
source rectangle and converts the returned string into rectangle coordinates.
void GetSourceRect(LPSTR lpstrAlias, LPRECT lprc)
{
char
achRetBuff[128];
char
achCommandBuff[128];
// Build
the command string.
wsprintf(achCommandBuff, "where %s source", lpstrAlias);
SetRectEmpty(lprc); // clears
the RECT
// Send
the command.
if
(mciSendString(achCommandBuff, achRetBuff,
sizeof(achRetBuff), NULL) == 0){
// The
rectangle is returned as "x y dx dy".
// Both x and y are 0 because this is the
source
//
rectangle. Translate the string into the RECT
//
structure.
char
*p;
p =
achRetBuff; // point to the
return string
while
(*p != ' ') p++; // go past the x (0)
while
(*p == ' ') p++; // go past spaces
while
(*p != ' ') p++; // go past the y (0)
while
(*p == ' ') p++; // go past spaces
//
Retrieve the width.
for (
; *p != ' '; p++)
lprc->right = (10 * lprc->right) + (*p -
'0');
while
(*p == ' ') p++; // go past spaces
//
Retrieve the height.
for (
; *p != ' '; p++)
lprc->bottom = (10 * lprc->bottom) + (*p - '0');
}
}
Note RECT structures are handled
differently in MCI than in other parts of Windows; in MCI, the right
member contains the width of the rectangle and the bottom member
contains its height. In the string interface, a rectangle is specified as X1,
Y1, X2, and Y2. The coordinates X1 and Y1
specify the upper-left corner of the rectangle, and the coordinates X2
and Y2 specify the width and height.