在软件二次开发的界面上可以调用MFC的控件,不知道能不能调用Windows Media Player插件

CAA C++ Development 2016-12-18 04:49:39
代码贴出,请大神指点,我是经过好多天摸索实在搞不定了,才来麻烦各位。

1.通过利用MFC和C:\Windows\System32\wmp.dll,我得到了CWMPPlayer4.h和CWMPPlayer4.cppwen文件。

2.我把上述两个文件加入到我的工程中。

3.然后再另外一个CAAMFC.cpp文件中包含#include "CWMPPlayer4.h",并且声明一个指针CWMPPlayer4 *m_video;

4.我创建了一个对话框名字叫“CAATest”

5.开始写代码,如下:


pWnd=NULL;

pWnd=CWnd::FindWindow(NULL,_T("CAATest")); //搜索对话框

hdlg =pWnd->GetSafeHwnd();//获取对话框句柄

AfxEnableControlContainer();//允许应用程序作为控件容器来使用

HCURSOR hCursor = ::LoadCursor(NULL, IDC_ARROW);//引入光标资源

// LPOLESTR pszName=OLESTR("0x6BF52A52, 0x394A, 0x11D3, { 0xB1, 0x53, 0x0, 0xC0, 0x4F, 0x79, 0xFA, 0xA6 }");

m_video = new CWMPPlayer4;

bool MediaPlay=m_video->Create(AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS|CS_PARENTDC, hCursor),
NULL, WS_VISIBLE|WS_CHILD, CRect(0, 0, 500, 250), pWndContainer, 0);//创建

if (MediaPlay==TRUE)
{

//m_video->put_enableContextMenu(false);
//m_video->put_enabled(false);
//m_video->put_uiMode(_T("none")); //该句去掉下面的状态条
// m_video->put_URL(_T("D:\360Downloads\123.wmv"));

}


不知道这么写有什么问题,望指正。不胜感激
...全文
358 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34789922 2016-12-26
  • 打赏
  • 举报
回复
请问楼主,你是怎么在caa对话框调用MFC控件的,能不能贴一下代码
  • 打赏
  • 举报
回复
多谢各位了,目的实现了,用了CAxWindow作为容器,就可以了
  • 打赏
  • 举报
回复
在这个界面上调用MFC控件我已经实现了。不知道调用Active控件还需要什么条件。
zgl7903 2016-12-19
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
引用 5 楼 schlafenhamster 的回复:
对话框中

// TODO: Add extra initialization here
m_video = new CWMPPlayer4;

int MP4=m_video->Create(AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS|CS_PARENTDC, LoadCursor(NULL,IDC_ARROW)),
NULL, WS_VISIBLE|WS_CHILD, CRect(0, 0, 350, 250), this, 0);//创建
没问题!

我提前创建好了一个对话框,不是用MFC建的,CWnd指针是通过CWnd::FindWindow("CAATest")获取的。
然后我写成这样,还是没有出现。


pWnd=NULL;

pWnd=CWnd::FindWindow(NULL,_T("CAATest")); //搜索对话框

hdlg =pWnd->GetSafeHwnd();//获取对话框句柄

AfxEnableControlContainer();//允许应用程序作为控件容器来使用

m_video = new CWMPPlayer4;

MediaPlay=m_video->Create(AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS|CS_PARENTDC, LoadCursor(NULL,IDC_ARROW)),
NULL, WS_VISIBLE|WS_CHILD, CRect(0, 0, 350, 250), pWnd, 0);//创建




不知道是不是这个对话框不支持ActiveX呢?
schlafenhamster 2016-12-19
  • 打赏
  • 举报
回复
对话框中 // TODO: Add extra initialization here m_video = new CWMPPlayer4; int MP4=m_video->Create(AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS|CS_PARENTDC, LoadCursor(NULL,IDC_ARROW)), NULL, WS_VISIBLE|WS_CHILD, CRect(0, 0, 350, 250), this, 0);//创建 没问题!
银点 2016-12-19
  • 打赏
  • 举报
回复
如果播放单个文件就用控件的URL,
引用 3 楼 zhidingguan2875 的回复:
[quote=引用 2 楼 银点的回复:]你用的是哪个版本的VS? 我用是VS2015。直接在对话框上右键->插入ActiveX控件,然后在弹出的对话框里找到windows media player就行了。
我是想通过代码,手动创建出来Media Player(不用vs),不知道可行不可行?[/quote] 那就是手动创建COM对象。手写代的目的是什么?
  • 打赏
  • 举报
回复
引用 2 楼 银点的回复:
你用的是哪个版本的VS? 我用是VS2015。直接在对话框上右键->插入ActiveX控件,然后在弹出的对话框里找到windows media player就行了。
我是想通过代码,手动创建出来Media Player(不用vs),不知道可行不可行?
银点 2016-12-19
  • 打赏
  • 举报
回复
你用的是哪个版本的VS? 我用是VS2015。直接在对话框上右键->插入ActiveX控件,然后在弹出的对话框里找到windows media player就行了。
schlafenhamster 2016-12-19
  • 打赏
  • 举报
回复
创建对话框时 ,加入 m_video
赵4老师 2016-12-19
  • 打赏
  • 举报
回复
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
  • 打赏
  • 举报
回复
我自己顶下!! 编译没有问题,但是看不到需要的Media Player控件

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧