Арифметика указателя быстрее, чем массивы, да?
blockquote>Совсем нет - они на самом деле одинаковы. массивы переводят на арифметику указателя во время компиляции.
char test[100]; test[40] = 12; // translates to: (test now indicates the starting address of the array) *(test+40) = 12;
Просто используйте существующий элемент управления ActiveX. Как Flash или Silverlight. Flash имеет встроенную поддержку веб-камеры и управляем через JavaScript. Silverlight не имеет встроенной поддержки камеры, но это - интеграция JavaScript, является фантастическим.
Если необходимо записать, что собственные затем разъедают не, это тривиально, чтобы заставить это взаимодействовать с JavaScript. Просто необходимо выставить IDispatch
интерфейс.
Для событий необходимо узнать о Точках подключения.
Да! Можно бросить события в C++ / земля ActiveX, которая заставляет код JavaScript выполнить функцию обработчика событий. Я даже смог сделать весь невидимый элемент управления ActiveX (тот же цвет как фон страницы) без кнопок или визуальной обратной связи, которая сделала всю ее работу GUI через JavaScript и CSS.
править: Совет Frank's является правильным на. Вот ссылка на сценарии событий.
Моя стратегия состояла в том, чтобы вызвать функцию C++ под названием MyUpdate (который реализует IConnectionPoint), когда я хотел вызвать обновления в браузере.
(Кроме того, я удостоверился, что накачал сообщения Windows в методе Fire_MyUpdate, потому что иногда код JavaScript перезвонит в землю C++ вызывающими методами для элемента управления ActiveX; это старается не замерзать браузер и гарантирует, что GUI JavaScript остается быстро реагирующим, например, для Кнопки отмены.)
На стороне браузера код JavaScript имеет глобальную переменную, ссылающуюся на объект, сопровождаемый "::", сопровождаемый именем метода:
function Uploader::MyUpdate()
{
// ... code to fetch the current state of various
// properties from the Uploader object and do something with it
// for example check Uploader.IsActive and show or hide an HTML div
}