您的位置:首页 > 其它

windows media player 11 ActiveX 控件配合 ffdshow播放avi文件窗口resize问题

2010-10-26 11:26 671 查看
最近做的项目需要在程序中内嵌wmp activex插件。

不过最郁闷的是wmp配合ffdshow播放h.264文件的时候,窗口的大小完全没法控制。

非常的发指!

之后发现了两个可以解决的办法

1.拿到oleobjectinplace的指针,然后resize它。

这个方法不错,而且应该是标准方法才对。所有的OLE组建都支持如此改变size。但是wmp每次播放的时候还是会自己resize到指定的size。

要获取他的resize事件才能够搞定。只要resize就给他重置size。

2.由于使用的是ffdshow。所以要观察一下。ffdshow有个选项叫做resize。所以可以通过调整解码器本身的resize选项。

ffdshow使用的是注册表。所以每次播放前改变注册表就可以了。这里给出一个函数。

#include <windows.h>
#include <shlwapi.h>
static HKEY hKey;
static const char * resizeDx = "resizeDx";
static const char * resizeDy = "resizeDy";
static const char * dataSet = "Software//GNU//ffdshow//default//";
void set_ffdshow_window_size(DWORD width,DWORD height)
{
RegOpenKeyEx(HKEY_CURRENT_USER,dataSet,0,KEY_SET_VALUE,&hKey);
RegSetValueEx(hKey, resizeDx, 0, REG_DWORD, (CONST BYTE*)&width, sizeof(DWORD));
RegSetValueEx(hKey, resizeDy, 0, REG_DWORD, (CONST BYTE*)&height, sizeof(DWORD));
RegCloseKey(hKey);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: