действительно ли DISPID_VALUE надежен для, вызывает на IDispatchs из сценариев?

мог Вы разъяснять немного больше, как это было для Вас, что необходимо было изменить. Возможно, Вы могли указать на меня в правильном направлении путем обеспечения некоторых ссылок на информацию, которую Вы использовали.

Мой первый источник были на самом деле инструменты man страницы. Просто тип

$ man toolname

на командной строке ($ вот часть подсказки, не вход).

В зависимости от платформы, они довольно правильно написаны и могут также быть найдены в Интернете. В случае make, я на самом деле считал полное документация , который занял несколько часов. На самом деле я не думаю, что это необходимо или полезно в большинстве случаев, но у меня было несколько особых требований в моих первых присвоениях в соответствии с Linux, который потребовал сложного make-файла. После записи make-файла я дал его опытному коллеге, который сделал некоторые незначительные тонкие настройки и исправления. После этого я в значительной степени знал make.

я использовал GVIM, потому что у меня были некоторые (но не очень) предшествующий опыт там, я не могу сказать ничего вообще о Emacs или альтернативах. Я нахожу, что это действительно помогает считать другие народы .gvimrc файл конфигурации. Многие люди помещают его на сеть. Вот мой .

не пытаются освоить весь binutils сразу, существует слишком много функций. Но получите общий обзор, таким образом, Вы будете знать, где искать при необходимости в чем-то в будущем. Вы должны , однако, знайте все важные параметры для g++ и ld (инструмент компоновщика GCC, это вызывается автоматически кроме тех случаев, когда явно предотвращенный).

Также мне любопытно, у Вас есть завершение кода и подсветка синтаксиса, когда Вы кодируете?

Подсветка синтаксиса: да, и намного лучший, чем Visual Studio. Завершение кода: да - выход . Во-первых, я должен признать, что не использовал завершение кода C++ даже в Visual Studio, потому что (по сравнению с VB и C#) это не было достаточно хорошо. Я не использую его часто теперь, но тем не менее, GVIM имеет поддержка завершения собственного кода C++. Объединенный с библиотека ctags и плагин как [1 120] taglist это - почти IDE.

На самом деле, то, что запустило меня, было статья Armin Ronacher. Прежде, чем прочитать текст, посмотрите на снимки экрана в конце его!

необходимо ли скомпилировать сначала прежде, чем получить (синтаксис) ошибки?

Да. Но это - то же для Visual Studio, не он (я никогда не использовал Целый Помидор)? Конечно, подсветка синтаксиса покажет Вам несоответствующие скобки, но это обо всех.

и как Вы отлаживаете (снова думают точки останова и т.д.)?

я использую gdb, который является инструментом командной строки. Существует также графический frontend, названный DDD. gdb современное средство отладки и может сделать все, что можно сделать в IDE. Единственная вещь, которая действительно раздражает меня, читает отслеживание стека, потому что строки не располагаются с отступом или форматируются так, действительно трудно просканировать информацию при использовании большого количества шаблонов (который я делаю). Но те также создают помехи отслеживанию стека в IDE.

Как я сказал, у меня было 'удовольствие' установить мои первые шаги в блокноте окон использования языка программирования Java и компиляторе Java командной строки в средней школе, и это было.. wel кошмар! конечно, когда я мог сравнить его с другими курсами программирования, я имел тогда, где у нас был достойный IDE

, Вы не должны даже пытаться сравнить современного, полнофункционального редактора как Emacs или GVIM к Блокноту. Блокнот является украшенным TextBox управление, и это действительно имеет все значение. Кроме того, работа над командной строкой является совсем другим опытом в Linux и Windows. Windows cmd.exe сильно наносят вред. PowerShell намного лучше.

РЕДАКТИРОВАНИЕ/: Я должен упомянуть явно, что GVIM снабдил вкладками редактирование (как в просмотре с использованием вкладок, не вкладках по сравнению с пробелами)! Это взяло мне возрасты для нахождения их, хотя они не скрыты вообще. Просто тип :tabe вместо плоскости :e при открытии файла или создании нового и GVIM создаст новую вкладку. Переключение между вкладками может быть сделано с помощью курсора или нескольких различных ярлыков (в зависимости от платформы). Ключ gt (тип g , тогда t в командном режиме) должен работать везде, и переходы к следующей вкладке или вкладке нет. n, если число было дано. Тип :help gt для получения большего количества справки.

5
задан Community 23 May 2017 в 10:33
поделиться

4 ответа

Он должен быть надежным для вызовов объектов из скриптов, если скрипт определяет это последовательно. Так должно быть и в случае с JScript / Javascript в MSHTML, но, к сожалению, документации по этому вопросу действительно скудно, у меня нет никаких убедительных доказательств.

По моему собственному опыту, функция Javascript передана в attachEvent ( ) всегда должен быть согласован - полученный объект, который является «функцией», может иметь только один вызываемый метод, который соответствует самому себе. Следовательно, метод по умолчанию - единственный, который вы можете найти, с DISPID 0. Функции Javascript обычно не имеют функций-членов, хотя я уверен, что есть способ сделать это возможным. Если бы у него были функции-члены, вы увидите их так же, как функции-члены для объектов. Функции-члены в JScript всегда будут согласованы с IDispatchEx в соответствии с правилами функций expando, поскольку любые функции, добавленные к объекту, считаются расширяемыми.

Интерфейс IDispatchEx @ MSDN

3
ответ дан 14 December 2019 в 13:40
поделиться

Метод или свойство по умолчанию, которые вызывает DISPID_VALUE , должны быть согласованы для данного интерфейса. Этот метод / свойство должно быть указано как DISPID_VALUE в определении интерфейса в IDL для библиотеки типов. Единственный способ его изменить - это если владелец интерфейса выпустит новую версию интерфейса, в которой изменится метод / свойство, используемое по умолчанию, но это нарушит фундаментальное правило интерфейсов COM.

2
ответ дан 14 December 2019 в 13:40
поделиться

Подводя итог прекрасным объяснениям, данным в ответах и ​​комментариях bobince, Kieron, Alohci и других:

  1. Firebug просто отображает DOM проанализированной страницы. Из-за сложных правил синтаксического анализа HTML DOM будет "отличаться" (в некотором смысле) от исходного HTML.
  2. В этом случае элемент TBODY в DOM добавляется анализатором HTML. Обратите внимание, что этот странный синтаксический анализ ограничен текстовыми / html-документами, а в XHTML DOM близко соответствует исходному XML.
    • Это поведение было указано в HTML 4 . Модель содержимого (разрешенные дочерние элементы) для таблицы : (CAPTION ?, (COL * | COLGROUP *), THEAD ?, TFOOT ?, TBODY +) - tr s разрешены только в tbody ! В спецификации сказано, что начальный тег tbody является необязательным, что должно означать, что если анализатор HTML обнаруживает tr непосредственно внутри таблицы , он вставляет tbody начальный тег, опущенный автором.
    • Чтобы прояснить ситуацию, HTML 5 определяет очень подробные правила синтаксического анализа, в частности, для этого случая : «Когда режим вставки» в таблице ", токены должны обрабатываться следующим образом: [...] Начальный тег, имя тега которого является одним из:" td "," th "," tr "->

      Купите копию Inside Ole (2-е изд.) И Inside Ole 2 (2-е изд.) За несколько долларов, которые можно потратить на Amazon. Это хороший справочник по этим малоизвестным заклинаниям OLE.

      Купите копию Inside Ole (2-е изд.) И Inside Ole 2 (2-е изд.) За несколько долларов, которые можно потратить на Amazon. Это хороший справочник по этим малоизвестным заклинаниям OLE.

0
ответ дан 14 December 2019 в 13:40
поделиться

Как сказал Мекларян, DISPID_VALUE (0), кажется, работает довольно последовательно для JS-функций (таким образом, он отлично работает с пользовательским attachEvent). Я использую их таким образом уже около года, и это всегда срабатывало. Также я обнаружил, что с помощью элемента управления activeX, встроенного в тег , мне нужно реализовать IConnectionPointContainer и IConnectionPoint для главного (объектного) IDispatch-внедрения CComObject, но любые другие, которые я выставляю на javascript в качестве возвращаемых значений из методов или свойств (через Invoke), я должен реализовать attachEvent и detachEvent сам.

При использовании точек соединения, соответствующие объекты IDispatch будут ожидать, что события будут отправляться на тот же самый DISPID, к которому они прикреплены на вашем объекте IDispatch...

смотрите http://code.google.com/p/firebreath/source/browse/src/ActiveXPlugin/JSAPI_IDispatchEx.h для примера реализации точек соединения.

.
1
ответ дан 14 December 2019 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: