描述:
在对话框的类中有一个WMPlayer控件的指针,COcx1* player;
class CVideoDlg : public CDialog
{
......
COcx1* player;
.....
}
在对话框创建好后,开始动态的创建player,我在自定义的函数中,写了以下代码:
player->Create(NULL, WS_CHILD| WS_VISIBLE, CRect(rc.left, rc.top, rc.right, rc.bottom), this, IDC_OCX1);
player->put_uiMode("none");
注意:代码能编译通过,也能运行,唯一不足的是WMPlayer控件闪屏(就是一闪一闪的),当用下面的代码,就没有闪屏现象:
player->Create(NULL, WS_CHILD| WS_VISIBLE, CRect(rc.left, rc.top, rc.right, rc.bottom), this, IDC_OCX1);
//player->put_uiMode("none"); 此处把它注释掉,就是默认为player->put_uiMode("full");
这时就没有闪屏现象。
而且,因为以上代码我用的是动态创建WMPlayer,当我用静态创建时(在VC资源编辑器中,在对话框资源上点右键,选择添加ActiveX控件),当控件被创建出来后,把控件属性uiMode选择为none,也没有类似问题。
不知道是什么原因,不管能不能帮上忙,都非常感谢你们!!!
问题归结为一句话(如果我之上的叙述不是很清楚):为什么动态创建WMPlayer控件,并加上player->put_uiMode("none")时,WMPlayer控件会有闪屏的现象。
解决方案1:
确定控件创建的视频区域内没有其他控件或者函数在自绘刷新!
另:换台机器试试!
player->put_uiMode("none");这句可能触发了控件自身的刷新操作。具体偶也没弄个,只是猜得。
解决方案3:用ShowWindow(SW_SHOW)和ShowWindow(SW_HIDE)不就可以了
解决方案4: COcx1* player;
只看见有这个指针 怎么没有看到new这个对象呢?
COcx1* player=new COcx1();
player->put_uiMode("none");
player->Create(NULL, WS_CHILD| WS_VISIBLE, CRect(rc.left, rc.top, rc.right, rc.bottom), this, IDC_OCX1);
不知道是不是这样