mymedia.cpp
来自「2D即时战略游戏VC源码」· C++ 代码 · 共 115 行
CPP
115 行
#include <windows.h>
#include <mmsystem.h>
#include "mymedia.h"
#include "digitalv.h"
WORD PlayAvi(LPSTR path,int Left,int Top,int Width,int Height,
HWND hWndCallback,HWND hWndShow,DWORD dwFlag)
{
MCI_DGV_OPEN_PARMS mciopen;
MCI_DGV_PLAY_PARMS mciplay;
MCI_ANIM_WINDOW_PARMS mciWindow;
MCI_ANIM_RECT_PARMS mciRect;
DWORD rtrn;
char b[130];
int i,Tested;
WORD wAviID;
mciopen.lpstrDeviceType="AVIVideo";
mciopen.lpstrElementName=path;
mciWindow.hWnd=hWndShow;
mciplay.dwCallback=(DWORD)hWndCallback;
mciRect.rc.top=Top;
mciRect.rc.left=Left;
mciRect.rc.bottom=Height;
mciRect.rc.right=Width;
int MaxAviNum=3;
Tested=0;
for(i=0;(i<MaxAviNum)&&(Tested==0);i++){
if ((rtrn=mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|
MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciopen))==0L)
Tested=1;
}
if(Tested==0) return(-1);
wAviID=mciopen.wDeviceID;
mciSendCommand(wAviID,MCI_PUT,
MCI_ANIM_PUT_DESTINATION|MCI_ANIM_RECT,
(DWORD)(LPVOID)&mciRect);
mciSendCommand(wAviID,MCI_WINDOW,
MCI_ANIM_WINDOW_HWND,
(DWORD)(LPVOID)&mciWindow);
if ((rtrn=mciSendCommand(wAviID,MCI_PLAY,dwFlag,
(DWORD)(LPVOID)&mciplay))!=0L){
mciSendCommand(wAviID,MCI_CLOSE,0,NULL);
mciGetErrorString(rtrn,(LPSTR)b,129);
return(-1);
}
return(wAviID);
}
BOOL PlayMIDI(WORD idMIDI, HWND hwnd)
{
MCI_PLAY_PARMS mciPlay;
mciPlay.dwCallback=(DWORD)hwnd;
if( mciSendCommand(idMIDI,MCI_PLAY,MCI_NOTIFY,
(DWORD)(LPVOID)&mciPlay)!=0l )
{
mciSendCommand(idMIDI,MCI_CLOSE,0,0);
return FALSE;
}
return TRUE;
}
int LoadMIDI(LPSTR path)
{
MCI_OPEN_PARMS mciOpen;
unsigned long rtrn;
WORD wMIDIID;
WORD NumDevs;
int i,Tested;
mciOpen.wDeviceID=0;
mciOpen.lpstrDeviceType="sequencer";
mciOpen.lpstrElementName=path;
NumDevs=midiOutGetNumDevs();
if(NumDevs<1) return(-1);
Tested=0;
for(i=0;(i<NumDevs) && (Tested==0);i++){
if((rtrn=mciSendCommand(i,MCI_OPEN,MCI_OPEN_TYPE|
MCI_OPEN_ELEMENT,
(DWORD)(LPVOID)&mciOpen))==0L){
Tested=1;
}
}
if(Tested==0) return(-1);
wMIDIID=mciOpen.wDeviceID;
return ((int)wMIDIID);
}
/*
Use Sample:
// Open & Play
idMIDI = LoadMIDI("\\dingding\\midi\\1step.mid");
PlayMIDI(idMIDI, hwndApp);
// In WinProc:
case MM_MCINOTIFY:
if( LOWORD(lParam) == idMIDI )
{
mciSendCommand( idMIDI, MCI_SEEK, MCI_SEEK_TO_START,NULL );
PlayMIDI( idMIDI, hWnd );
}
break;
// Close:
mciSendCommand(idMIDI, MCI_CLOSE, MCI_WAIT, NULL);
*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?