首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

bcb6中使用WindowsMediaPlayer控件,怎么自适应大小

2012-03-04 
bcb6中使用WindowsMediaPlayer控件,如何自适应大小我做测试,在一个窗体中放一个WindowsMediaPlayer控件,Al

bcb6中使用WindowsMediaPlayer控件,如何自适应大小
我做测试,在一个窗体中放一个WindowsMediaPlayer控件,Align属性设为alClient但是运行后,我鼠标拖拽窗体改变窗体大小时,WindowsMediaPlayer控件并没有随着改变大小,然后我上网查资料后,在窗体的OnResize事件中加了一行代码this->wmp1->DoObjectVerb(-1);运行后发现鼠标拖不动了,
我参考过的资料有下面这些链接:
http://www.boxui.com/?p=19
http://www.delphi2007.net/DelphiVCL/html/reply_200603272030576539.html

我想达到的效果很简单,就是我改变窗体大小时,我的WindowsMediaPlayer控件也能随之改变大小,请高手指点

[解决办法]
非sql内容,友情帮顶。
[解决办法]
在Delphi中使用微软的WindowsMediaPlayer ActiveX控件的时候,如果想让控件随窗口大小一起改变,
最常用的方法就是设置控件的Align属性,但是你会发现,对于ActiveX控件,会出现问题,下面把解决
办法贴出来。 
 
 
  在网上搜索了很多贴子,有设置WindowsMediaPlayer控件的焦点的,有使用DoObjectVerb (-1)办法的。
这两种办法在2000以下的操作系统中没有问题,但是在XP以上的系统中,因为其默认设置的效果是“拖动
时改变窗口大小”,这样会不让你改变窗口大小。但是最大化、最小化的时候,没问题。

最后在一个国外的论坛上找到了解决办法,方法如下:

软件开发网

 
一劳永逸的解决办法是:

1、先在窗口里定义一个类型:

TLocOleCtrl = Class (TOleControl);

2、在窗口的OnResize事件里加上:

TLocOleCtrl (WindowsMediaPlayer1).OnPosRectChange (Rect (0, 0, ClientWidth, ClientHeight));

通过以上两点设置,一切OK~~~~~

[解决办法]
帮楼主搜了2天的网络,真的没有什么线索,但是解决了,其实方法很简单.在你的bcb安装目录下找个vcl目录,我的是在C:\Program Files\Borland\CBuilder6\Include\Vcl这里,目录里有个olectrls.hpp文件,把这个文件复制到你的项目的目录里面,用记事本打开这个文件,查找在121行OnPosRectChange这个函数的注释掉,在231行后面添加OnPosRectChange这个函数,就是这样

C/C++ code
HRESULT __stdcall OnPosRectChange(const Types::TRect &rcPosRect);
[解决办法]
关注中。。。。。。。。。。。

热点排行