Как я могу инициализировать элемент управления ActiveX из URL? - PullRequest
0 голосов
/ 25 мая 2010

У меня есть элемент управления MFC ActiveX, встроенный в веб-страницу. Некоторые параметры для этого элемента управления очень велики. Я не знаю, какими будут эти значения во время компиляции, но я знаю, что после получения они почти наверняка никогда не изменятся.

В настоящее время я встраиваю параметры так:

<object name="MyActiveX">
  <param name="param" value="<%= GetData() %>" />
</object>

Я хочу сделать что-то вроде этого:

<object name="MyActiveX">
  <param name="param" value="content/data" valuetype="ref" />
</object>

Идея состоит в том, что браузер получит ресурс с веб-сервера и передаст его элементу управления. Кэширование в браузере само по себе позаботится о ненужных загрузках. К сожалению, параметры ref работают не так. Браузер просто передает URL-адрес к элементу управления (что мне кажется бесполезным , но я отвлекся).

Итак, я могу как-нибудь заставить эту работу работать? В качестве альтернативы, есть ли в MFC простой способ проинструктировать контейнер хоста элемента управления для получения ресурса, идентифицированного URI? Есть идеи получше?

Ответы [ 2 ]

1 голос
/ 25 мая 2010

Реализуйте интерфейс IPersistStream или IPersistStreamInit, после чего вы можете указать контент с атрибутом данных объекта, как в: <object clsid="XXXX" data="mydata.bin"></object>. Internet Explorer загрузит файл, на который ссылается атрибут данных, и передаст его вам через интерфейс IPersistStream :: Load. ATL имеет реализации по умолчанию для этих интерфейсов, которые будут заполнять свойства вашего элемента управления, почти наверняка так же, как и MFC.

0 голосов
/ 25 мая 2010

Действительно ли нужны данные при создании?

Не могли бы вы сделать шаг 'init'

largeData = GetData();
MyActiveX.init( largeData );
...