2011-06-12 49 views
3

我想在C#中使用控制台控制台中的AxShockwaveFlashObjects.AxShockwaveFlash对象。要做到这一点,你必须设置obj.OcxState。我看了一下表单设计师是如何做到这一点的,并且是这样做的:手动创建一个Flash AxHost.OcxState

this.flash.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("flash.OcxState"))); 

我查看了资源,这里没有任何东西。

我的问题是,我如何手动创建AxHost.State,以便我可以将我的flash对象的OcxState设置为它?

我看到一个State的构造函数接受一个Streamintboolstring。但我不知道要在Stream(或int,boolstring)中创建它。

回答

4

我喜欢这个问题:P,因为设置OcxState可以让你从内存中的流中动态加载Flash影片,我见过的东西在这里和那里都没有回复(可能是现在,不知道)。两年前,我在一个重要项目的工作中意识到了这一点,并将其搁置了三个小时,直到我开始工作。

由于流,你可以使用任何流,一个MemoryStream足够(为了填补它,你可以使用的BinaryWriter),设置OcxState只是做:

flashCtl.OcxState = new AxHost.State(stream, 1, false, null); 

如果资源文件中有OcxState输入为空,也许是因为Flash OCX可以让你设置一个没有问题的空流,这是我不知道的。

+0

而我甚至不记得为什么我需要这样做。非常感谢你的回答,但是当我记得的时候,我会记住它:) – 2011-08-04 11:56:44

+0

呃,我甚至没有意识到这个问题已经有几个月的时间了,好吧,它可能对其他人有帮助未来也是如此。 – Neverbirth 2011-08-04 12:06:33

+0

@Neverbirth得到了关于OcxState的问题:http://stackoverflow.com/questions/8735616/activex-initialization-axhost-state-object – 2012-01-06 09:32:32