@婷儿 你好,想跟你请教个问题:你好,我上次问过你一个duilib和视频播放的问题。现在想进一步的了解,希望能得到你的回答,谢谢!duilib的控件库比较有限,我不知道你是如何把视频放入那个布局里的。我本来想用MFC试一试,即用dialog来播放视频,然后利用duilib把这个dialog的部分界面优化一下。但是,好像发生了一些冲突,在网上也找不到完整的demo,所以只能像无头苍蝇一样乱撞。不知道你的程序是在空白项目里全部自己写的,还是基于其他类似MCF基础写的。如果是空白项目的话,那视频播放的控件是如何引入到duilib的xml布局中的。如果不是基于空白项目写的,那又是如何把duilib添加进去的。希望能得到你的回答。如果能给我一个小demo那就更好了,当然这是我的奢求。我的邮件是cbangyu@163.com。无论如何,还是非常感谢你的,因为我知道至少有人做出来了,那么就是行得通的,只是我还没找到路而已。
我没用MFC只使用DUILIB,视频的播放是我用DIRECTSHOW,
至于DUILIB跟DIRECTSHOW的结合比较简单,你参考下DUILIB里面的CActiveXUI。
我是参照这个另外搞了一个控件,在这个控件里面创建了一个子窗口,
然后把这个子窗口作为DIRECTSHOW视频窗口的所有者,即父窗口,
这样视频就会在这个控件里面显示的。
ActiveX控件应该是是可以的....我的做法如下:
// 创建窗体
WNDCLASSEX winClass;
memset(&winClass, 0, sizeof (winClass));
winClass.cbSize = sizeof (WNDCLASSEX);
winClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
winClass.lpfnWndProc = (WNDPROC)CursorChangeWndProc;
winClass.hInstance = g_hInstance;
winClass.lpszClassName = "STATIC_MPlayer";
winClass.hbrBackground = CreateSolidBrush(RGB(0, 0, 0));
if (INVALID_ATOM == RegisterClassEx(&winClass) )
{
return 0;
}
m_ChildWnd = CreateWindowEx(WS_EX_APPWINDOW, _T("STATIC_MPlayer"), "TrueCrypt UAC",
WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_CENTERIMAGE, 0, 0, 0, 0, m_hWnd, NULL, g_hInstance, NULL);
if ( ::IsWindow(m_ChildWnd) )
{
m_pCWndChild = CWnd::FromHandle(m_ChildWnd);
m_MPlayer.SetVideoPanelHandle(m_ChildWnd);
::ShowWindow(m_ChildWnd, SW_HIDE);
}
我是win32控制台工程,在OnCreate里创建了一个Dialog,然后使用MPlayer引擎实现了一个播放器播放功能;