Qual è il significato del numero alla fine del nome dell'interfaccia? Vedo che IHTMLDocument3-7
non ha membri (see example for #5) e 8
ha membri relativi ai gesti. Il numero deriva dalla versione di Windows?Perché Microsoft ha IHTMLDocument, IHTMLDocument2, ..., IHTMLDocument8?
risposta
Questa è una caratteristica generale di interfacce COM pubblici.
Se volete la compatibilità a ritroso, non si vuole cambiare un'interfaccia pubblicato, perché ciò significherebbe tutto il codice persone hanno scritto per, diciamo, IE 6 smette di funzionare con IE 7, e tutti i loro clienti a ottenere arrabbiato con loro, e si arrabbiano con te.
Quindi, se IE 5 aggiunge nuove funzionalità che devono essere esposte, invece di modificare IHTMLDocument
, si crea una nuova interfaccia e si supporta IE5 (per ereditarietà, QueryInterface
o un altro meccanismo esplicito). E quando IE 7.0.2 o IE 8 o Win XP o qualsiasi altra cosa aggiunge ancora nuove funzionalità, ne crei un'altra. E così via.
Mentre MS avrebbe potuto trovare suffissi descrittivi invece di numeri sequenziali, sarebbe probabilmente più confuso che utile. Quindi, IHTMLDocument2
, IHTMLDocument3
, ecc. Sono i nomi. Non significano nulla, tranne l'ordine in cui sono stati aggiunti.
No, indica solo una versione diversa dell'interfaccia. Non ha nulla a che fare con la versione di Windows (e, del resto, poco/niente a che fare con la versione MSHTML):
Qual è il significato del numero alla fine del nome dell'interfaccia?
Questa è la convenzione standard per il controllo delle versioni delle interfacce COM. IXXX2 estende IXXX con nuove funzioni. IXXX3 estende IXXX2 con nuove funzioni e così via. Ciò consente ai client di utilizzare funzioni meno recenti senza interruzioni quando vengono rilasciate nuove versioni e, se lo si desidera, utilizzare funzioni più nuove, anche controllare se tali funzioni sono disponibili prima di provare a chiamarle.
vedo che IHTMLDocument3-7 hanno nessun membro
Dove hai preso l'idea da? Guarda le loro definizioni attuali. Espongono molti nuovi membri da un'interfaccia all'altra.
Infatti. Guardare mshtml.h nell'SDK è spesso divertente e illuminante. –
come di http://msdn.microsoft.com/en-us/library/aa752541(v=vs.85).aspx
dove possiamo vedere:
L'interfaccia IHTMLDocument3 eredita dall'interfaccia IDispatch ma non ha membri aggiuntivi.
può essere un po 'di confusione per i nuovi arrivati per interfacciare il mondo.
IHTMLDocument3 ha più membri. La qualità della documentazione di micro $ oft è semplicemente ineffabilmente terribile. – Gammadyne
Il bug di nessun membro doc è una regressione che è stata corretta ... –