Udostępnij za pośrednictwem


Programy obsługi miniatur

System Windows Vista korzysta z obrazów miniatur specyficznych dla pliku niż wcześniejsze wersje systemu Windows. System Windows Vista używa ich we wszystkich widokach, w oknach dialogowych i dla dowolnego typu pliku, który je udostępnia. Inne aplikacje mogą również korzystać z miniatury. Zmieniono również wyświetlanie miniatur. Teraz dostępne jest ciągłe spektrum rozmiarów wybieranych przez użytkownika, a nie odrębnych rozmiarów, takich jak ikony i miniatury dostępne w systemie Windows XP.

Nuta

Możesz usłyszeć te miniatury nazywane ikonami na żywo.

 

Miniatury 32-bitowej rozdzielczości i tak duże, jak 256x256 pikseli są często używane w interfejsie użytkownika systemu Windows Vista. Właściciele formatów plików powinni być przygotowani do wyświetlania miniatur w tym rozmiarze. Powinny również udostępniać niestatyczne obrazy miniatur, które odzwierciedlają zawartość określonego pliku. Na przykład miniatura pliku tekstowego powinna zawierać miniaturową wersję dokumentu, w tym jej tekst.

Interfejs IThumbnailProvider został wprowadzony, aby zapewnić miniaturę łatwiejszą i prostszą niż w przeszłości, kiedy IExtractImage zamiast tego byłyby używane. Należy pamiętać, że istniejący kod używający IExtractImage jest nadal prawidłowy w systemie Windows Vista. Jednak IExtractImage nie jest obsługiwana w okienku szczegółów.

W tym temacie omówiono następujące zagadnienia:

Procesy miniatur

Programy obsługi, w tym programy obsługi miniatur, są domyślnie uruchamiane w osobnym procesie. Możesz wymusić uruchomienie procedury obsługi, przekazując wartość NULL jako kontekst powiązania w wywołaniu polecenia IShellItem::BindToHandler, jak pokazano poniżej:

IShellItem::BindToHandler(NULL, BHID_ThumbnailHandler,..)

Możesz również zrezygnować z braku procesu domyślnie, ustawiając wpis DisableProcessIsolation w rejestrze, jak pokazano w tym przykładzie. Identyfikator klasy (CLSID) {E357FCCD-A995-4576-B01F-234630154E96} jest identyfikatorem CLSID IThumbnailProvider implementacji.

HKEY_CLASSES_ROOT
   CLSID
      {E357FCCD-A995-4576-B01F-234630154E96}
         DisableProcessIsolation = 1

Pamięć podręczna miniatur i ustalanie rozmiaru

Gdy potrzebna jest miniatura, system Windows najpierw sprawdza pamięć podręczną miniatur obrazu. Funkcja wyodrębniania miniatur jest wywoływana, jeśli obraz nie zostanie znaleziony w pamięci podręcznej. Jest on również wywoływany, gdy czas ostatniej modyfikacji obrazu jest późniejszy niż kopia w pamięci podręcznej.

Obrazy miniatur w tej pamięci podręcznej są przechowywane w zestawie odrębnych rozmiarów. Wszystkie rozmiary są podane w pikselach.

  • 32x32
  • 96x96
  • 256x256
  • 1024x1024

Nuta

Te wartości mogą ulec zmianie. Kod nie powinien zakładać, że każdy konkretny rozmiar będzie zawsze używany.

 

Jeśli obraz nie jest kwadratowy, nie należy dodawać go samodzielnie. System Windows jest odpowiedzialny za przestrzeganie oryginalnego współczynnika proporcji i wypełnienie obrazu do rozmiaru kwadratowego.

Gdy zostanie wyświetlony obraz o określony rozmiar, chyba że zostanie znalezione dokładne dopasowanie, system Windows Vista zawsze pobiera następny największy obraz i skaluje go w dół do żądanego rozmiaru. Obraz nigdy nie jest skalowany w górę, tak jak w poprzednich wersjach systemu Windows.

W poniższej tabeli przedstawiono kilka przykładów relacji między żądanym rozmiarem a dostępnym rozmiarem.

Maksymalny rozmiar podanego obrazu Rozmiar żądany przez program wyodrębniania Podajesz
156x120 256x256 156x120 (Nie dopełnij, zachowaj współczynnik proporcji)
2048x1024 256x256 256x128 (Nie dopełnij, zachowaj współczynnik proporcji)

 

Punkt redukcji można zadeklarować jako część wpisu identyfikatora programu skojarzonej aplikacji w rejestrze. Poniżej tego rozmiaru miniatury nie są używane.

HKEY_CLASSES_ROOT
   .{ProgId}
      ThumbnailCutoff

Wpis ThumbnailCutoff jest jedną z tych wartości REG_DWORD.

Wartość Odcięcia Poufne wartości HighDPI
0 32x32 Tak
1 16x16 Tak
2 48x48 Tak
3 16x16 Tak

Wysoka czułość kropek na cal (dpi) oznacza, że wymiary pikseli miniatury automatycznie dopasowują się do większej dpi. Na przykład obraz 32x32 o rozdzielczości 96 dpi będzie obrazem 40x40 o rozdzielczości 120 dpi.

Jeśli nie określono wpisu ThumbnailCutoff, domyślna wartość odcięcia to 20x20 (nie jest rozróżniana dpi).

Nakładki miniatur

Nakładki miniatur, mały obraz wyświetlany w prawym dolnym rogu miniatury, umożliwiają deweloperom stosowanie identyfikacji marki do miniatur. Nakładki są deklarowane w rejestrze w ramach wpisu identyfikatora programu skojarzonej aplikacji, jak pokazano poniżej:

HKEY_CLASSES_ROOT
   .{ProgId}
      TypeOverlay

Wpis TypeOverlay zawiera wartość REG_SZ interpretowaną w następujący sposób:

  • Jeśli wartość jest odwołaniem do zasobu (plik .ico osadzony w dll), takim jak ISVComponent.dll,-155, ten obraz jest używany jako nakładka dla plików z tym rozszerzeniem nazwy pliku. Należy pamiętać, że w tym przykładzie 155 jest identyfikatorem zasobu, a jeśli biblioteka DLL nie znajduje się w standardowej ścieżce (takiej jak C:/Windows/System32), pełna ścieżka jest wymagana zamiast tylko nazwy biblioteki DLL.
  • Jeśli wartość jest pustym ciągiem, do obrazu nie jest stosowana żadna nakładka.
  • Jeśli wartość nie jest obecna, zostanie użyta domyślna ikona skojarzonej aplikacji.

Nakładki dla miniatur powinny być udostępniane tylko za pomocą tego mechanizmu i stosowane przez system Windows. Nie należy samodzielnie stosować nakładek.

Ozdoby miniatur

Ozdoby, takie jak cienie upuszczania, są stosowane do miniatur na podstawie aktualnie wybranego motywu użytkownika. Ozdoby są dostarczane przez system Windows; nie twórz ich samodzielnie. System Windows może w dowolnym momencie zmienić wygląd określonych elementów ozdobnych, więc jeśli pod warunkiem, że jesteś właścicielem, możesz zaryzykować wypadnięcie synchronizacji z systemem. Twoje miniatury mogą być nieaktualne lub nieaktualne.

Potencjalne ozdoby są deklarowane w rejestrze w ramach wpisu identyfikatora programu skojarzonej aplikacji, jak pokazano poniżej:

HKEY_CLASSES_ROOT
   .{ProgId}
      Treatment

Wpis Leczenie zawiera jedną z następujących wartości REG_DWORD:

Wartość Znaczenie
0 Brak ozdobności
1 Cień
2 Zdjęcie Obramowanie
3 Zestawy graficznych wideo

Cień domyślnie jest stosowany do obrazów.

Rejestrowanie programu obsługi miniatur

Rejestracja programu obsługi miniatur jest oparta na standardowych skojarzeniach plików.

Identyfikator GUID rozszerzenia powłoki miniatury jest E357FCCD-A995-4576-B01F-234630154E96.

IThumbnailProvider

kompilowanie procedur obsługi miniatur

wskazówki dotyczące obsługi miniatur