イメージとウィンドウのストレッチ
次の使用例は、ビデオ クリップの画像を拡大し、表示されるフレームの縦横比を変更します。 MCIWnd ウィンドウに表示されるフレームは、高さの 2 倍、元のフレームの幅の 3 倍になります。 MCIWndGetDest マクロと MCIWndPutDest マクロは、変換先の四角形座標を取得して再定義します。 GetWindowRect 関数と SetWindowPos 関数は、MCIWnd ウィンドウ ディメンションの変更を管理します。
// extern RECT rCurrent, rDest;
case WM_COMMAND:
switch (wParam)
{
case IDM_CREATEMCIWND:
g_hwndMCIWnd = MCIWndCreate(hwnd,
g_hinst,
WS_CHILD | WS_VISIBLE,
"sample.avi");
break;
case IDM_RESIZEWINDOW: // destination RECT and playback area
GetWindowRect(g_hwndMCIWnd, &rWin); // window size
MCIWndGetDest(g_hwndMCIWnd, &rCurrent); // destination RECT
rDest.top = rCurrent.top; // new boundaries
rDest.right = rCurrent.right;
rDest.left = rCurrent.left +
((rCurrent.left - rCurrent.right) * 3);
rDest.bottom = rCurrent.top +
((rCurrent.bottom - rCurrent.top) * 2);
MCIWndPutDest(g_hwndMCIWnd, &rDest); // new RECT
SetWindowPos(g_hwndMCIWnd, // window to resize
NULL, // z-order: don't care
0, 0, // position: don't care
rDest.right - rDest.left, // width
(rWin.bottom - rWin.top + // height (window -
(rCurrent.bottom - rCurrent.top) + // original RECT +
(rDest.bottom - rDest.top)), // new RECT
SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
break;
}
break;
// Handle other messages here.