Udostępnij za pośrednictwem


Klasa CSnapInItemImpl

Ta klasa udostępnia metody implementowania obiektu węzła przystawki.

Ważne

Tej klasy i jej składowych nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.

Składnia

template <class T, BOOL bIsExtension = FALSE>
class ATL_NO_VTABLE CSnapInItemImpl : public CSnapInItem

Parametry

T
Klasa pochodząca z CSnapInItemImplklasy .

bIsExtension
WARTOŚĆ TRUE, jeśli obiekt jest rozszerzeniem przystawki; w przeciwnym razie FAŁSZ.

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CSnapInItemImpl::CSnapInItemImpl Konstruktor.

Metody publiczne

Nazwa/nazwisko opis
CSnapInItemImpl::AddMenuItems Dodaje elementy menu do menu kontekstowego.
CSnapInItemImpl::Command Wywoływana przez konsolę po wybraniu niestandardowego elementu menu.
CSnapInItemImpl::CreatePropertyPages Dodaje strony do arkusza właściwości przystawki.
CSnapInItemImpl::FillData Kopiuje informacje o obiekcie przystawki do określonego strumienia.
CSnapInItemImpl::GetResultPaneInfo RESULTDATAITEM Pobiera strukturę przystawki.
CSnapInItemImpl::GetResultViewType Określa typ widoku używanego przez okienko wyników.
CSnapInItemImpl::GetScopePaneInfo SCOPEDATAITEM Pobiera strukturę przystawki.
CSnapInItemImpl::Notify Wywoływana przez konsolę w celu powiadomienia przystawki o akcjach podjętych przez użytkownika.
CSnapInItemImpl::QueryPagesFor Wywołana funkcja w celu sprawdzenia, czy węzeł przystawki obsługuje strony właściwości.
CSnapInItemImpl::SetMenuInsertionFlags Modyfikuje flagi wstawiania menu dla obiektu przystawki.
CSnapInItemImpl::SetToolbarButtonInfo Ustawia informacje o określonym przycisku paska narzędzi.
CSnapInItemImpl::UpdateMenuState Aktualizuje stan elementu menu kontekstowego.
CSnapInItemImpl::UpdateToolbarButton Aktualizuje stan określonego przycisku paska narzędzi.

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
CSnapInItemImpl::m_bstrDisplayName Nazwa obiektu przystawki.
CSnapInItemImpl::m_resultDataItem Struktura systemu Windows RESULTDATAITEM używana przez CSnapInItemImpl obiekt .
CSnapInItemImpl::m_scopeDataItem Struktura systemu Windows SCOPEDATAITEM używana przez CSnapInItemImpl obiekt .

Uwagi

CSnapInItemImpl Udostępnia podstawową implementację obiektu węzła przystawki, na przykład dodawanie elementów menu i pasków narzędzi oraz przekazywanie poleceń dla węzła przystawki do odpowiedniej funkcji obsługi. Te funkcje są implementowane przy użyciu kilku różnych interfejsów i typów map. Domyślna implementacja obsługuje powiadomienia wysyłane do obiektu węzła, określając prawidłowe wystąpienie klasy pochodnej, a następnie przekazując komunikat do poprawnego wystąpienia.

Hierarchia dziedziczenia

CSnapInItem

CSnapInItemImpl

Wymagania

Nagłówek: atlsnap.h

CSnapInItemImpl::AddMenuItems

Ta metoda implementuje funkcję Win32 IExtendContextMenu::AddMenuItems.

AddMenuItems(
    LPCONTEXTMENUCALLBACK piCallback,
    long* pInsertionAllowed,
    DATA_OBJECT_TYPES type);

Parametry

piCallback
[in] Wskaźnik do kontrolki IContextMenuCallback , która może dodawać elementy do menu kontekstowego.

pInsertionAllowed
[in, out] Identyfikuje punkty wstawiania elementów menu zdefiniowane przez program Microsoft Management Console (MMC), których można użyć. Może to być kombinacja następujących flag:

  • CCM_INSERTIONALLOWED_TOP Elementy można wstawić w górnej części menu kontekstowego.

  • CCM_INSERTIONALLOWED_NEW Elementy można wstawić w podmenu Tworzenie nowego.

  • CCM_INSERTIONALLOWED_TASK Elementy można wstawić w podmenu Task.

  • CCM_INSERTIONALLOWED_VIEW Elementy można wstawić w menu widoku paska narzędzi lub w podmenu Widok menu kontekstowego okienka wyników.

type
[in] Określa typ obiektu. Może mieć jedną z następujących wartości:

  • CCT_SCOPE obiekt danych dla kontekstu okienka zakresu.

  • CCT_RESULT obiekt danych dla kontekstu okienka wyników.

  • CCT_SNAPIN_MANAGER Obiekt danych dla kontekstu menedżera przystawki.

  • CCT_UNINITIALIZED Obiekt danych ma nieprawidłowy typ.

CSnapInItemImpl::Command

Ta metoda implementuje funkcję Win32 IExtendContextMenu::Command.

Command(long lCommandID, DATA_OBJECT_TYPES type);

Parametry

lCommandID
[in] Określa identyfikator polecenia elementu menu.

type
[in] Określa typ obiektu. Może mieć jedną z następujących wartości:

  • CCT_SCOPE obiekt danych dla kontekstu okienka zakresu.

  • CCT_RESULT obiekt danych dla kontekstu okienka wyników.

  • CCT_SNAPIN_MANAGER Obiekt danych dla kontekstu menedżera przystawki.

  • CCT_UNINITIALIZED Obiekt danych ma nieprawidłowy typ.

CSnapInItemImpl::CreatePropertyPages

Ta metoda implementuje funkcję Win32 IExtendPropertySheet::CreatePropertyPages.

CreatePropertyPages(
    LPPROPERTYSHEETCALLBACK lpProvider,
    long handle,
    IUnknown* pUnk,
    DATA_OBJECT_TYPES type);

Parametry

lpProvider
[in] Wskaźnik do interfejsu IPropertySheetCallback .

uchwyt
[in] Określa dojście używane do kierowania komunikatu powiadomienia MMCN_PROPERTY_CHANGE do odpowiedniej klasy danych.

Punk
[in] Wskaźnik do interfejsu IExtendPropertySheet w obiekcie zawierającym informacje kontekstowe o węźle.

type
[in] Określa typ obiektu. Może mieć jedną z następujących wartości:

  • CCT_SCOPE obiekt danych dla kontekstu okienka zakresu.

  • CCT_RESULT obiekt danych dla kontekstu okienka wyników.

  • CCT_SNAPIN_MANAGER Obiekt danych dla kontekstu menedżera przystawki.

  • CCT_UNINITIALIZED Obiekt danych ma nieprawidłowy typ.

CSnapInItemImpl::CSnapInItemImpl

CSnapInItemImpl Tworzy obiekt.

CSnapInItemImpl();

CSnapInItemImpl::FillData

Ta funkcja jest wywoływana w celu pobrania informacji o elemencie.

FillData(CLIPFORMAT cf, LPSTREAM pStream);

Parametry

por
[in] Format (tekst, tekst sformatowany lub tekst sformatowany z elementami OLE) schowka.

pStream
[in] Wskaźnik do strumienia zawierającego dane obiektu.

Uwagi

Aby prawidłowo zaimplementować tę funkcję, skopiuj poprawne informacje do strumienia (pStream), w zależności od formatu Schowka wskazanego przez cf.

CSnapInItemImpl::GetResultViewType

Wywołaj tę funkcję, aby pobrać typ widoku dla okienka wyników obiektu przystawki.

GetResultViewType(
    LPOLESTR* ppViewType,
    long* pViewOptions);

Parametry

ppViewType
[out] Wskaźnik do adresu zwróconego typu widoku.

pViewOptions
[out] Wskaźnik do wyliczenia MMC_VIEW_OPTIONS, który zapewnia konsolę z opcjami określonymi przez przystawkę będącą właścicielem. Ta wartość może być jedną z następujących wartości:

  • MMC_VIEW_OPTIONS_NOLISTVIEWS = 0x00000001 Informuje konsolę, aby powstrzymać się od prezentowania standardowych opcji widoku listy w menu Widok . Umożliwia przystawce wyświetlanie własnych widoków niestandardowych tylko w okienku widoku wyników. Jest to obecnie jedyna flaga opcji zdefiniowana.

  • MMC_VIEW_OPTIONS_NONE = 0 Zezwala na opcje widoku domyślnego.

CSnapInItemImpl::GetScopePaneInfo

Wywołaj tę funkcję, aby pobrać SCOPEDATAITEM strukturę przystawki.

GetScopePaneInfo (SCOPEDATAITEM* pScopeDataItem);

Parametry

pScopeDataItem
[out] Wskaźnik do SCOPEDATAITEM struktury CSnapInItemImpl obiektu.

CSnapInItemImpl::GetResultPaneInfo

Wywołaj tę funkcję, aby pobrać RESULTDATAITEM strukturę przystawki.

GetResultPaneInfo (RESULTDATAITEM* pResultDataItem);

Parametry

pResultDataItem
[out] Wskaźnik do RESULTDATAITEM struktury CSnapInItemImpl obiektu.

CSnapInItemImpl::m_bstrDisplayName

Zawiera ciąg wyświetlany dla elementu węzła.

CComBSTR m_bstrDisplayName;

CSnapInItemImpl::m_scopeDataItem

Struktura SCOPEDATAITEM obiektu danych przystawki.

SCOPEDATAITEM m_scopeDataItem;

CSnapInItemImpl::m_resultDataItem

Struktura RESULTDATAITEM obiektu danych przystawki.

RESULTDATAITEM m_resultDataItem;

CSnapInItemImpl::Notify

Wywoływana, gdy obiekt przystawki jest wywoływany przez użytkownika.

STDMETHOD(Notify)(
    MMC_NOTIFY_TYPE event,
    long arg,
    long param,
    IComponentData* pComponentData,
    IComponent* pComponent,
    DATA_OBJECT_TYPES type) = 0;

Parametry

event
[in] Identyfikuje akcję podjętą przez użytkownika. Możliwe są następujące powiadomienia:

  • MMCN_ACTIVATE wysłane, gdy okno jest aktywowane i dezaktywowane.

  • MMCN_ADD_IMAGES Wysłane, aby dodać obrazy do okienka wyników.

  • MMCN_BTN_CLICK Wysłane, gdy użytkownik kliknie jeden z przycisków paska narzędzi.

  • MMCN_CLICK Wysłane, gdy użytkownik kliknie przycisk myszy na elemencie widoku listy.

  • MMCN_DBLCLICK Wysłane, gdy użytkownik dwukrotnie kliknie przycisk myszy w elemencie widoku listy.

  • MMCN_DELETE Wysłane, aby poinformować przystawkę, że obiekt powinien zostać usunięty.

  • MMCN_EXPAND Wysłane, gdy folder musi zostać rozszerzony lub zakontraktowany.

  • MMCN_MINIMIZED wysłane, gdy okno jest zminimalizowane lub zmaksymalizowane.

  • MMCN_PROPERTY_CHANGE Wysłane, aby powiadomić obiekt przystawki, że widok obiektu przystawki ma ulec zmianie.

  • MMCN_REMOVE_CHILDREN wysłane, gdy przystawka musi usunąć całe poddrzewo dodane poniżej określonego węzła.

  • MMCN_RENAME Po raz pierwszy wysłać zapytanie o zmianę nazwy i po raz drugi wykonać zmianę nazwy.

  • MMCN_SELECT Wysłane po wybraniu elementu w okienku zakresu lub widoku wyników.

  • MMCN_SHOW Wysłane, gdy element zakresu jest zaznaczony lub zaznaczony po raz pierwszy.

  • MMCN_VIEW_CHANGE wysłane, gdy przystawka może zaktualizować wszystkie widoki po wystąpieniu zmiany.

Arg
[in] Zależy od typu powiadomienia.

Param
[in] Zależy od typu powiadomienia.

pComponentData
[out] Wskaźnik do obiektu implementowania IComponentDataelementu . Ten parametr ma wartość NULL, jeśli powiadomienie nie jest przekazywane z IComponentData::Notify.

pComponent
[out] Wskaźnik do obiektu, który implementuje IComponentelement . Ten parametr ma wartość NULL, jeśli powiadomienie nie jest przekazywane z IComponent::Notify.

type
[in] Określa typ obiektu. Może mieć jedną z następujących wartości:

  • CCT_SCOPE obiekt danych dla kontekstu okienka zakresu.

  • CCT_RESULT obiekt danych dla kontekstu okienka wyników.

  • CCT_SNAPIN_MANAGER Obiekt danych dla kontekstu menedżera przystawki.

  • CCT_UNINITIALIZED Obiekt danych ma nieprawidłowy typ.

CSnapInItemImpl::QueryPagesFor

Wywołana funkcja w celu sprawdzenia, czy węzeł przystawki obsługuje strony właściwości.

QueryPagesFor(DATA_OBJECT_TYPES type);

CSnapInItemImpl::SetMenuInsertionFlags

Wywołaj tę funkcję, aby zmodyfikować flagi wstawiania menu określone przez element pInsertionAllowed dla obiektu przystawki.

void SetMenuInsertionFlags(
    bool bBeforeInsertion,
    long* pInsertionAllowed);

Parametry

bBeforeInsertion
[in] Nonzero, jeśli funkcja powinna być wywoływana przed dodaniu elementów do menu kontekstowego; w przeciwnym razie 0.

pInsertionAllowed
[in, out] Identyfikuje punkty wstawiania elementów menu zdefiniowane przez program Microsoft Management Console (MMC), których można użyć. Może to być kombinacja następujących flag:

  • CCM_INSERTIONALLOWED_TOP Elementy można wstawić w górnej części menu kontekstowego.

  • CCM_INSERTIONALLOWED_NEW Elementy można wstawić w podmenu Tworzenie nowego.

  • CCM_INSERTIONALLOWED_TASK Elementy można wstawić w podmenu Task.

  • CCM_INSERTIONALLOWED_VIEW Elementy można wstawić w menu widoku paska narzędzi lub w podmenu Widok menu kontekstowego okienka wyników.

Uwagi

Jeśli tworzysz przystawkę podstawową, możesz zresetować dowolną flagę wstawiania jako sposób ograniczenia rodzaju elementów menu, które może dodać rozszerzenie innej firmy. Na przykład przystawka podstawowa może wyczyścić flagę CCM_INSERTIONALLOWED_NEW, aby zapobiec dodawaniu własnych elementów menu Utwórz nowe.

Nie należy próbować ustawiać bitów w pInsertionAllowed , które zostały pierwotnie wyczyszczone. Przyszłe wersje programu MMC mogą używać bitów, które nie są obecnie zdefiniowane, więc nie należy zmieniać bitów, które nie są obecnie zdefiniowane.

CSnapInItemImpl::SetToolbarButtonInfo

Wywołaj tę funkcję, aby zmodyfikować wszystkie style przycisków paska narzędzi obiektu przystawki przed utworzeniem paska narzędzi.

void SetToolbarButtonInfo(
    UINT id,
    BYTE* fsState,
    BYTE* fsType);

Parametry

id
[in] Identyfikator przycisku paska narzędzi, który ma zostać ustawiony.

fsState
[in] Flagi stanu przycisku. Może to być co najmniej jeden z następujących elementów:

  • TBSTATE_CHECKED Przycisk ma styl TBSTYLE_CHECKED i jest naciskany.

  • TBSTATE_ENABLED Przycisk akceptuje dane wejściowe użytkownika. Przycisk, który nie ma tego stanu, nie akceptuje danych wejściowych użytkownika i jest szary.

  • TBSTATE_HIDDEN Przycisk nie jest widoczny i nie może odbierać danych wejściowych użytkownika.

  • TBSTATE_INDETERMINATE Przycisk jest szary.

  • TBSTATE_PRESSED Naciśnięcie przycisku.

  • TBSTATE_WRAP Podział wiersza jest zgodny z przyciskiem. Przycisk musi również mieć TBSTATE_ENABLED.

fsType
[in] Flagi stanu przycisku. Może to być co najmniej jeden z następujących elementów:

  • TBSTYLE_BUTTON Tworzy standardowy przycisk wypychania.

  • TBSTYLE_CHECK Tworzy przycisk, który przełącza się między naciśniętymi i nieciśniętymi stanami za każdym razem, gdy użytkownik kliknie go. Przycisk ma inny kolor tła, gdy jest w stanie naciśniętym.

  • TBSTYLE_CHECKGROUP Tworzy przycisk sprawdzania, który pozostaje naciśnięty do momentu naciśnięcia innego przycisku w grupie.

  • TBSTYLE_GROUP Tworzy przycisk, który pozostaje naciśnięty do momentu naciśnięcia innego przycisku w grupie.

  • TBSTYLE_SEP Tworzy separator, zapewniając niewielką lukę między grupami przycisków. Przycisk, który ma ten styl, nie otrzymuje danych wejściowych użytkownika.

CSnapInItemImpl::UpdateMenuState

Wywołaj tę funkcję, aby zmodyfikować element menu przed wstawieniem do menu kontekstowego obiektu przystawki.

void UpdateMenuState(
    UINT id,
    LPTSTR pBuf,
    UINT* flags);

Parametry

id
[in] Identyfikator elementu menu, który ma zostać ustawiony.

pBuf
[in] Wskaźnik do ciągu elementu menu, który ma zostać zaktualizowany.

Flagi
[in] Określa nowe flagi stanu. Może to być kombinacja następujących flag:

  • MF_POPUP Określa, że jest to podmenu w menu kontekstowym. Elementy menu, punkty wstawiania i dalsze podmenu mogą zostać dodane do tej podmenu przy użyciu elementu lCommandID jako IInsertionPointIDelementu .

  • MF_BITMAP i MF_OWNERDRAW Te flagi nie są dozwolone i spowodują zwrócenie wartości E_INVALIDARG.

  • MF_SEPARATOR Rysuje linię podziału poziomego. Można dodawać tylko IContextMenuProvider elementy menu z zestawem MF_SEPARATOR.

  • MF_CHECKED Umieszcza znacznik wyboru obok elementu menu.

  • MF_DISABLED Wyłącza element menu, więc nie można go zaznaczyć, ale flaga nie jest szara.

  • MF_ENABLED Włącza element menu, aby można go było wybrać, przywracając go ze stanu szarości.

  • MF_GRAYED Wyłącza element menu, szare, aby nie można było go wybrać.

  • MF_MENUBARBREAK Funkcje tak samo jak flaga MF_MENUBREAK paska menu. W przypadku menu rozwijanego, podmenu lub menu skrótów nowa kolumna jest oddzielona od starej kolumny przez linię pionową.

  • MF_MENUBREAK Umieszcza element w nowym wierszu (dla paska menu) lub w nowej kolumnie (w menu rozwijanym, podmenu lub w menu skrótów) bez oddzielania kolumn.

  • MF_UNCHECKED nie umieszcza znacznika wyboru obok elementu (ustawienie domyślne).

Nie można używać razem następujących grup flag:

  • MF_DISABLED, MF_ENABLED i MF_GRAYED.

  • MF_MENUBARBREAK i MF_MENUBREAK.

  • MF_CHECKED i MF_UNCHECKED.

CSnapInItemImpl::UpdateToolbarButton

Wywołaj tę funkcję, aby zmodyfikować przycisk paska narzędzi obiektu przystawki przed jego wyświetleniem.

BOOL UpdateToolbarButton(UINT id, BYTE fsState);

Parametry

id
Określa identyfikator przycisku paska narzędzi, który ma zostać zaktualizowany.

fsState
Określa stan przycisku paska narzędzi. Jeśli ten stan ma zostać ustawiony, zwróć wartość TRUE. Może to być kombinacja następujących flag:

  • ENABLED Przycisk akceptuje dane wejściowe użytkownika. Przycisk, który nie ma tego stanu, nie akceptuje danych wejściowych użytkownika i jest szary.

  • SPRAWDZONO Przycisk ma styl SPRAWDZONE i jest naciśnięty.

  • HIDDEN Przycisk nie jest widoczny i nie może odbierać danych wejściowych użytkownika.

  • INDETERMINATE Przycisk jest szary.

  • BUTTONPRESSED Naciśnięcie przycisku.

Zobacz też

Omówienie klasy