2013-01-01 13 views

Odpowiedz

17

jest to ogólna cecha interfejsów COM publicznych.

Jeśli chcesz kompatybilności wstecznej, nigdy nie chcesz zmienić opublikowanego interfejsu, ponieważ oznaczałoby to cały kod, na który ludzie pisali, powiedzmy, IE 6 przestaje działać z IE 7, a wszyscy ich klienci denerwują się na nich, i oni się na ciebie wściekają.

Tak więc, jeśli IE 5 dodaje nowe funkcje, które wymagają ujawnienia, zamiast zmieniać IHTMLDocument, tworzysz nowy interfejs i czynisz obsługę IE5 zarówno (przez dziedziczenie, QueryInterface, lub jakiś bardziej jawny mechanizm). A kiedy IE 7.0.2 lub IE 8 lub Win XP lub cokolwiek dodaje jeszcze więcej nowych funkcji, tworzysz inny. I tak dalej.

Podczas gdy MS mogło wymyślić opisowe przyrostki zamiast po prostu numerów sekwencyjnych, prawdopodobnie byłoby to bardziej mylące niż pomocne. Tak więc, IHTMLDocument2, IHTMLDocument3, itp. To nazwy. Nic nie znaczą, z wyjątkiem kolejności, w jakiej zostały dodane.

3

Jakie jest znaczenie numeru na końcu nazwy interfejsu?

Jest to standardowa konwencja wersjonowania interfejsów COM. IXXX2 rozszerza IXXX o nowe funkcje. IXXX3 rozszerza IXXX2 o nowe funkcje i tak dalej. Dzięki temu klienci mogą korzystać ze starszych funkcji bez zerwania po wydaniu nowych wersji i używać nowych funkcji w razie potrzeby, a nawet sprawdzić, czy te funkcje są dostępne przed próbą ich wywołania.

widzę, że IHTMLDocument3-7 nie mają członkowie

Skąd wziąłeś ten pomysł z? Spójrz na ich aktualne definicje. Pokazują wielu nowych członków z jednego interfejsu do drugiego.

+1

Rzeczywiście. Patrzenie na mshtml.h w SDK jest często zabawne i pouczające. –

Powiązane problemy