ассоциативный массив от javascript до объекта activex - PullRequest
0 голосов
/ 10 августа 2010

Мне нужно передать ассоциативный массив из Javascript в элемент управления C ++ activex в IE6 +. Кажется, стыдно писать свой собственный тип для чего-то такого стандартного. Он не должен работать с собственными объектами JS, я могу использовать пользовательский тип ассоциативного массива, если мне нужно.

Я пару дней гуглял, и информации на эту тему не так много. COM и ATL должны уже иметь это, не так ли?

1 Ответ

1 голос
/ 13 августа 2010

Эта запись Эрик Липперт может пролить некоторый свет на то, как это можно сделать из C ++. Посмотрите на его комментарии о том, что массив Javascript является объектом Dispatch . Таким образом, вы можете получить DISPID и вызвать Invoke для каждого. Другой вариант - преобразовать массив Javascript в SafeArray, используя VBArray (и немного VBScript), или вы можете просто использовать COM-объект Scripting.Dictionary , который является эквивалентом ассоциативного массива. Несколько ресурсов ниже.

http://blogs.msdn.com/b/david.wang/archive/2006/07/04/howto-convert-between-jscript-array-and-vb-safe-array.aspx

http://www.java2s.com/Tutorial/JavaScript/0600__MS-JScript/DictionaryKeys.htm

...