永发信息网

请教MCIWndCreate的问题

答案:1  悬赏:80  手机版
解决时间 2021-01-22 22:05
请教MCIWndCreate的问题
最佳答案
MCIWndCreate函数在什么时候用呢?比如说我们远程视频开发中 接收到对方传来的压缩(compressor)后的 视频数据 我们解压缩(decompressor)之后可以使用
这个函数来创建一个窗体 进行播放视频 如 avi(音频视频交错的格式), 他可以播放 wav avi mid等多种格式 但是一定要是解码之后的文件 。

一个简单的代码示例:
HWND hw=MCIWndCreate(m_hWnd,AfxGetInstanceHandle(),MCIWNDF_SHOWALL|MCIWNDF_NOMENU|MCIWNDF_NOPLAYBAR,L"c:\\CAPTURE.avi"); //创建一个与
::MoveWindow(hw,0,0,300,300,TRUE) ; //移动MCI窗口调整窗口的合适位置 //多媒体关联的MCI窗口
MCIWndPlay(hw) ; //播放多媒体文件

MCIWnd的使用 :

1、MCIWnd的创建

  MCIWnd子窗口的创建可使用MCIWndCreate函数:
    HWND MCIWndCreate(
      HWND hwndParent,   //父窗口句柄
      HINSTANCE hInstance, //应用程序的实例句柄
      DWORD dwStyle,    //显示风格
      LPSTR szFile     //多媒体文件名
    );
  返回的HWND可以保存下来,以供以后使用,也可不保存。
  该函数会在其父窗口上创建一个子窗口,类似于创建一个控间如按扭或列表框等。
  该子窗口会占据父窗口一定空间,可带有播放按钮、进度条、菜单按钮等。

图3.3.1 MCIWnd子窗口
示例:
 (1)建一个多文档的MFC应用程序。
 (2)在View类的头文件中加入变量:
    HWND m_mciWnd;
 (3)在View类中用ClassWizard重载OnInitialUpdate函数。
 (4)在此函数中加入代码:
     m_mciWnd=MCIWndCreate(m_hWnd, AfxGetInstanceHandle(), MCIWNDF_SHOWALL | MCIWNDF_RECORD, GetDocument()->GetPathName());
   这里,m_hWnd为此View窗口的HWND,
      AfxGetInstanceHandle()可取得本应用程序的实例句柄,
      MCIWNDF_flag们决定了子窗口中是否要加入播放按钮、录音按钮、菜单按钮、进度条等控件,
      GetDocument()->GetPathName()则可获得通过打开文件对话框取得的文件名。
 (5)编译运行。
 (6)在运行的程序中已经可以任意打开一个多媒体文件进行播放。例如 .wav、.avi、.mid文件。

2、MCIWnd的使用

  如果在MCIWnd子窗口中有播放按钮、录音按钮、菜单按钮、进度条等控件,可以通过它们操作多媒体。
  如果象上例一样保存了MCIWndCreate函数返回的HWND,则不管子窗口中是否有控件,都可通过MCIWndxxxx函数操作多媒体。

 (7)在上面的程序中加入ID为 ID_NEW、ID_OPEN、ID_PLAY、ID_PLAYREVERSE、ID_RECORD、ID_SAVE、ID_STOP、ID_CLOSE 的菜单项或Toolbar按钮。
 (8)在 ID_NEW 的消息响应函数中加入:
     MCIWndNew(m_mciWnd,"waveaudio");
   MCIWnd子窗口可以建立一个新的音频多媒体文件。
 (9)在 ID_OPEN 的消息响应函数中加入:
     MCIWndOpen(m_mciWnd,"c:\\MyWav.wav",0);
   MCIWnd子窗口可以打开一个已存在的多媒体文件。
 (10)在 ID_PLAY 的消息响应函数中加入:
     MCIWndPlay(m_mciWnd);
   MCIWnd子窗口可以播放多媒体文件。
 (11)在 ID_PLAYREVERSE 的消息响应函数中加入:
     MCIWndPlayReverse(m_mciWnd);
   MCIWnd子窗口可以倒着播放视频多媒体文件。
 (12)在 ID_RECORD 的消息响应函数中加入:
     MCIWndRecord(m_mciWnd);
   MCIWnd子窗口可以录制音频多媒体文件。
 (13)在 ID_SAVE 的消息响应函数中加入:
     MCIWndSave(m_mciWnd,"c:\\MyWav.wav");
   MCIWnd子窗口可以保存已录制的音频多媒体文件。
 (14)在 ID_STOP 的消息响应函数中加入:
     MCIWndStop(m_mciWnd);
   MCIWnd子窗口可以停止正在播放或录制的多媒体文件。
 (15)在 ID_CLOSE 的消息响应函数中加入:
     MCIWndClose(m_mciWnd);
   MCIWnd子窗口可以关闭当前的多媒体文件,若要再使用,必须重新打开。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一个身份证可以办几张银行卡?
______组的三条线段不能围成三角形.A.2、2、
求解关于x的ax-x-2>0
红花可以炖汤吗
采用植物染色的面料有什么优势?
如果能赋予你的手机一项神力,你会选择什么,
月工资3500需要交多少个人所得税?
练习瑜伽会对身体有害处吗·??
单选题有人把分化细胞中表达的基因形象的分为
华为手机掉水里了开不了机,用干燥剂弄干了以
朋友说,反正你有钱还在乎这点钱 我该怎么
仓库面积比较大,现在仓库上面是彩钢瓦,因为
行测问题求解析
无锡春丰员工楼怎么走
作文题目:虚假背后的什么比如虚假背后的阳光
推荐资讯
东经119.3 北纬33.8 在哪里?
88平方三室两厅一厨一卫小吗
谁要是肯帮我,我的命以后就是他的
“男子百米”身高要求是多少??最低要求是多
女主余微安,男主顾南宸的小说名是
不要手术的丰胸,能有什么可以快速丰胸
雪豹羊毛衫地址在哪,我要去那里办事,
圣皇国际家居地址在什么地方,我要处理点事!
胃粘膜出血多久能好
乐土岭村地址在什么地方,想过去办事,
徐汇区龙吴路1343弄华沁家园附近有什么计划生
0,1,2,7,9,1.5,18,19,20,23中,()是奇数,()是
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?