Come a enumerare gli elementi figlio dell'oggetto dello Snap-In?

Per visualizzare correttamente il contenuto di un oggetto lo snap-in, è necessario enumerare gli elementi figlio dell'oggetto, se esistono. Il posto migliore per questa modifica è nel metodo Notify della classe snap-in di dati (in questa discussione, CSnapNameData ).

&Notanbsp;  La classe di snap-in di dati è derivata da CSnapInItemImpl.

Per impostazione predefinita, la creazione guidata oggetto crea un gestore per questa notifica. In questo gestore, è necessario modificare l'esistente switch istruzione per gestire il MMCN_EXPAND e MMCN_SHOW notifiche.

Gestione della notifica MMCN_EXPAND

La MMCN_EXPAND notifica viene inviata quando la cartella dello snap-in oggetto deve essere espansa o contratta. In questo caso, è solo bisogno di enumerare gli elementi nel riquadro di portata. Questa enumerazione viene fatto nella case istruzione per la notifica di MMCN_EXPAND.

Per inserire gli elementi del riquadro di portata, innanzitutto recuperare il IConsoleNameSpace di interfaccia per l'oggetto dello snap-in e quindi chiamare il metodo InsertItem . Il codice seguente illustra il reperimento delle necessarie interfacce

 CComQIPtrlt; IConsoleNameSpace,
& IID_IConsoleNameSpace > spConsoleNameSpace(pConsole);
/ / TODO: enumerare elementi nel riquadro portata con una funzione definita dall'utente

Gestione della notifica MMCN_SHOW

La MMCN_SHOW notifica viene inviata quando un elemento viene selezionato o deselezionato per la prima volta. Questa enumerazione viene fatto nella case istruzione per la notifica MMCN_SHOW . A differenza della notifica di MMCN_EXPAND , deve enumerare sia il risultato nel riquadro elementi e portata nel riquadro elementi.

In primo luogo, enumerare gli elementi di ambito recuperando il IConsoleNameSpace interfaccia per lo snap-in oggetto e poi chiamare il metodo InsertItem . Dopo che hanno enumerato gli elementi nel riquadro ambito, fare lo stesso per il risultato gli elementi nel riquadro recuperando il IResultData interfaccia e una chiamata a InsertItem.

CComQIPtrlt; IConsoleNameSpace,
& IID_IConsoleNameSpace > spConsoleNameSpace(pConsole);
/ / TODO: enumerare elementi nel riquadro portata con una funzione definita dall'utente
CComQIPtr < IResultData & IID_IResultData > spResultData(pConsole);
/ / TODO: enumerare gli elementi nel riquadro risultato con una funzione definita dall'utente

Index