[求教]activeX 的 MFC 多个窗口 嵌入 同一框架中不同的网页

yurenwjq 2014-05-03 05:58:36
我有一个ocx, 里有5个窗口,我对外提供5个接口,每个接口显示不同的窗口,如果是纯C/S模式下那这5个窗口肯定是可以独立显示的.不管他是模态的还是非模态的窗口.

现在我想让5个窗口嵌入到5个不同的网页里面,这5个网页肯定是在同一个网页框架里面,这样可行吗? 如果可行 那么我要用到什么方式呢?


我现在已经解决了在同一个网页框架里面不同的子网页上调用同一个OCX的功能函数,但是同一个OCX的5个窗口怎么被网页调用呢,并且嵌入到我指定的网页位置上!!


有经验的大虾帮帮忙出出主意
...全文
169 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2014-05-06
  • 打赏
  • 举报
回复
应该是这样的. 一般ocx被引用的时候,程序部分一般是不创建副本,而是通过内存映射,将实际的代码内存映射到目标线程的逻辑空间中,因此,代码实际是多个线程共用的(如果多个线程使用同一个ocx部件的话)
yurenwjq 2014-05-06
  • 打赏
  • 举报
回复
引用 10 楼 worldy 的回复:
每个OCX都有独立的GUID啊,又不是5个公用一个GUID
不知道我理解的对不对哦, 我在你说的上面理解的意思是,一个大的ocx引入以后,在其他子页面我再用object标签引用这个OCX绑定的其他5个ocx组件GUID, 那么这5个ocx其实是生存在这个大的ocx的副本里面,这样就可以将5个ocx组件分别嵌入到不同的页面,但是他们的内存实在同一块区域中的!
worldy 2014-05-06
  • 打赏
  • 举报
回复
每个OCX都有独立的GUID啊,又不是5个公用一个GUID
yurenwjq 2014-05-06
  • 打赏
  • 举报
回复
引用 8 楼 worldy 的回复:
[quote=引用 7 楼 yurenwjq 的回复:] [quote=引用 3 楼 worldy 的回复:] 将你的工程做成ActiveX OCX工程,每个窗口做成OCX控件(一个工程里可以有多个OCX控件),这样,你想在网页里使用窗口都可以了
哥,我这东西肯定是ocx控件啊, 估计你没看懂我的意思[/quote] 也许吧,但我不知道你是否有理解我的意思: 当你5个窗口都独立的时候,你想在网页里怎么镶入应该都可以,对吧?那你在一个ocx文件中包含5个独立的ocx部件,每个部件对应于你的窗口,那你的每个窗口就可以自由的在各个网页中镶入了[/quote] 我好像懂了你说的东西, 但又不是全部! 我5个独立的ocx部件, 就算我能分开他们,那么他们怎么引入到我的网页上呢,毕竟一个网页引入一个ocx是需要一个object标签的.而这个标签正好又是一个容器,且我们的ocx也只能生活在他这个容器里面啊!!
worldy 2014-05-06
  • 打赏
  • 举报
回复
引用 7 楼 yurenwjq 的回复:
[quote=引用 3 楼 worldy 的回复:] 将你的工程做成ActiveX OCX工程,每个窗口做成OCX控件(一个工程里可以有多个OCX控件),这样,你想在网页里使用窗口都可以了
哥,我这东西肯定是ocx控件啊, 估计你没看懂我的意思[/quote] 也许吧,但我不知道你是否有理解我的意思: 当你5个窗口都独立的时候,你想在网页里怎么镶入应该都可以,对吧?那你在一个ocx文件中包含5个独立的ocx部件,每个部件对应于你的窗口,那你的每个窗口就可以自由的在各个网页中镶入了
yurenwjq 2014-05-06
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
将你的工程做成ActiveX OCX工程,每个窗口做成OCX控件(一个工程里可以有多个OCX控件),这样,你想在网页里使用窗口都可以了
哥,我这东西肯定是ocx控件啊, 估计你没看懂我的意思
yurenwjq 2014-05-06
  • 打赏
  • 举报
回复
引用 2 楼 oyljerry 的回复:
还是要每个网页都嵌入你的ocx对象,然后你对应的显示某一个窗口
按照想法来说,应该只嵌入一个ocx,其他的地方引用他,我们在框架内嵌入一个ocx后,其他的页面可以通过js来引用他的功能函数,但是页面是需要容器来支持的,所以就碰到纠结点了
yurenwjq 2014-05-06
  • 打赏
  • 举报
回复
引用 1 楼 hbs_biscuit 的回复:
想了想 ,看看这样是不是有这个可能,如果想在页面中显示窗口,那么这个窗口应该在 html 的一个 object中 形如<object type="clsid:xxx--xxx-xxxxx"> 你的页面中要有多个 object 标签,你可以再 ocx 中声明多个类(coclass),然后 为每个OBJECT 制定一个 clsid。 由于你的多个页面应该都在一个进程之内,所以 OCX 也处于同一个进程,这样在 SCM 激活的时候,你的各个 COCLASS 实例可以共享各种窗口句柄了。 只是觉得有这种可能性,没有真正试过
但是这样ocx会生成多个副本 而不是唯一的一个
redui 2014-05-05
  • 打赏
  • 举报
回复
每个控件都是独立的实例,但是处于同一个进程,你的例子实际上会创建5个控件实例,如何共享或者区分某些数据,取决于内部数据的实现方法
worldy 2014-05-05
  • 打赏
  • 举报
回复
将你的工程做成ActiveX OCX工程,每个窗口做成OCX控件(一个工程里可以有多个OCX控件),这样,你想在网页里使用窗口都可以了
oyljerry 2014-05-05
  • 打赏
  • 举报
回复
还是要每个网页都嵌入你的ocx对象,然后你对应的显示某一个窗口
hbs_biscuit 2014-05-05
  • 打赏
  • 举报
回复
想了想 ,看看这样是不是有这个可能,如果想在页面中显示窗口,那么这个窗口应该在 html 的一个 object中 形如<object type="clsid:xxx--xxx-xxxxx"> 你的页面中要有多个 object 标签,你可以再 ocx 中声明多个类(coclass),然后 为每个OBJECT 制定一个 clsid。 由于你的多个页面应该都在一个进程之内,所以 OCX 也处于同一个进程,这样在 SCM 激活的时候,你的各个 COCLASS 实例可以共享各种窗口句柄了。 只是觉得有这种可能性,没有真正试过

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧