MFC怎么控制视频切换
MFC如何控制视频切换
大家好,我用Windows Media Player控件播放视频,VC接收串口消息后,根据不同数据播放对应的视频,现在有个问题,就是播放视频中再发送另一数据就无法切换播放,怎么回事呢?是否是收到的串口数据没有更新还是?请帮忙解答,谢谢各位
代码如下:
[code=C/C++][/code]void CPlayerDlg::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{ ////////以下你可以根据自己的通信协议加入处理代码
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<1;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<1;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
m_strRXData+=strtemp; //加入接收编辑框对应字符串
}
if(m_strRXData==0x01)
{
LPCSTR url="c:\\1.wmv";
m_Player.SetUrl(url);
}
else if(m_strRXData==0x02)
{
LPCSTR url="c:\\12.wmv";
m_Player.SetUrl(url);
}
}
UpdateData(FALSE); //更新编辑框内容
}
------解决方案--------------------
切换播放前先暂停和停止播放器看看
m_Player.pause(); //暂停
m_Player.stop(); //停止
------解决方案--------------------
调用close方法看看,不行的话,调用
CWMPPlayer4中的GetControls()方法,得到CWMPControls ,然后再调用CWMPControls
中的pause() 和stop()方法
------解决方案--------------------
调试一下看看执行到切换代码了么
------解决方案--------------------
http://technet.microsoft.com/zh-cn/library/aa388769
参考下MSDN
------解决方案--------------------
我原来试过,直接这样更改是可以切换的,你在里面打个断点,看程序运行到哪,m_strRXData是什么,看有没有变化
------解决方案--------------------
对了,你接收串口的数据没有清空缓存,试试在下一次接收前做Mscomm.InBufferCount=0 操作看看,然后最好打断点自己看看数据改变了没
大家好,我用Windows Media Player控件播放视频,VC接收串口消息后,根据不同数据播放对应的视频,现在有个问题,就是播放视频中再发送另一数据就无法切换播放,怎么回事呢?是否是收到的串口数据没有更新还是?请帮忙解答,谢谢各位
代码如下:
[code=C/C++][/code]void CPlayerDlg::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{ ////////以下你可以根据自己的通信协议加入处理代码
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<1;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<1;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
m_strRXData+=strtemp; //加入接收编辑框对应字符串
}
if(m_strRXData==0x01)
{
LPCSTR url="c:\\1.wmv";
m_Player.SetUrl(url);
}
else if(m_strRXData==0x02)
{
LPCSTR url="c:\\12.wmv";
m_Player.SetUrl(url);
}
}
UpdateData(FALSE); //更新编辑框内容
}
------解决方案--------------------
切换播放前先暂停和停止播放器看看
m_Player.pause(); //暂停
m_Player.stop(); //停止
------解决方案--------------------
调用close方法看看,不行的话,调用
CWMPPlayer4中的GetControls()方法,得到CWMPControls ,然后再调用CWMPControls
中的pause() 和stop()方法
------解决方案--------------------
调试一下看看执行到切换代码了么
------解决方案--------------------
http://technet.microsoft.com/zh-cn/library/aa388769
参考下MSDN
------解决方案--------------------
我原来试过,直接这样更改是可以切换的,你在里面打个断点,看程序运行到哪,m_strRXData是什么,看有没有变化
------解决方案--------------------
对了,你接收串口的数据没有清空缓存,试试在下一次接收前做Mscomm.InBufferCount=0 操作看看,然后最好打断点自己看看数据改变了没