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 CSnapInItemImpl
klasy .
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 IComponentData
elementu . Ten parametr ma wartość NULL, jeśli powiadomienie nie jest przekazywane z IComponentData::Notify
.
pComponent
[out] Wskaźnik do obiektu, który implementuje IComponent
element . 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
jakoIInsertionPointID
elementu .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.