Classe CComCompositeControl
Questa classe fornisce i metodi necessari per implementare un controllo composito.
Importante
Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.
Sintassi
template <class T>
class CComCompositeControl : public CComControl<T,CAxDialogImpl<T>>
Parametri
T
La classe, derivata da CComObjectRoot o CComObjectRootEx, nonché da qualsiasi altra interfaccia che si vuole supportare per il controllo composito.
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CComCompositeControl::CComCompositeControl | Costruttore. |
CComCompositeControl::~CComCompositeControl | Distruttore. |
Metodi pubblici
Nome | Descrizione |
---|---|
CComCompositeControl::AdviseSinkMap | Chiamare questo metodo per consigliare o annullare la visualizzazione di tutti i controlli ospitati dal controllo composito. |
CComCompositeControl::CalcExtent | Chiamare questo metodo per calcolare le dimensioni in unità HIMETRIC della risorsa finestra di dialogo usata per ospitare il controllo composito. |
CComCompositeControl::Create | Questo metodo viene chiamato per creare la finestra di controllo per il controllo composito. |
CComCompositeControl::CreateControlWindow | Chiamare questo metodo per creare la finestra di controllo e consigliare qualsiasi controllo ospitato. |
CComCompositeControl::SetBackgroundColorFromAmbient | Chiamare questo metodo per impostare il colore di sfondo del controllo composito usando il colore di sfondo del contenitore. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CComCompositeControl::m_hbrBackground | Pennello di sfondo. |
CComCompositeControl::m_hWndFocus | Handle della finestra che ha attualmente lo stato attivo. |
Osservazioni:
Le classi derivate dalla classe CComCompositeControl
ereditano la funzionalità di un controllo composito ActiveX. I controlli ActiveX derivati da CComCompositeControl
sono ospitati da una finestra di dialogo standard. Questi tipi di controlli sono chiamati controlli compositi perché sono in grado di ospitare altri controlli (controlli Windows nativi e controlli ActiveX).
CComCompositeControl
identifica la risorsa della finestra di dialogo da usare per creare il controllo composito cercando un membro dati enumerato nella classe figlio. L'IDD membro di questa classe figlio viene impostato sull'ID risorsa della risorsa della finestra di dialogo che verrà usata come finestra del controllo. Di seguito è riportato un esempio del membro dati da cui deve essere contenuta la classe derivata CComCompositeControl
per identificare la risorsa della finestra di dialogo da usare per la finestra del controllo:
enum { IDD = IDD_MYCOMPOSITE };
Nota
I controlli compositi sono sempre controlli finestrati, anche se possono contenere controlli senza finestra.
Un controllo implementato da una CComCompositeControl
classe derivata da ha un comportamento di tabulazione predefinito incorporato. Quando il controllo riceve lo stato attivo tramite tabulazione in un'applicazione contenitore, premendo il tasto TAB, lo stato attivo verrà scorrere tutti i controlli contenuti del controllo composito, quindi fuori dal controllo composito e dall'elemento successivo nell'ordine di tabulazione del contenitore. L'ordine di tabulazione dei controlli ospitati è determinato dalla risorsa della finestra di dialogo e determina l'ordine in cui verrà eseguita la tabulazione.
Nota
Affinché gli acceleratori funzionino correttamente con un CComCompositeControl
, è necessario caricare una tabella di acceleratore durante la creazione del controllo, passare di nuovo l'handle e il numero di acceleratori in IOleControlImpl::GetControlInfo e infine eliminare definitivamente la tabella quando il controllo viene rilasciato.
Esempio
// Example for overriding IOleControlImpl::GetControlInfo()
// This example uses the accelerator table from the project resources
// with the identifier IDR_ACCELTABLE
// Define GetControlInfo() in the header of your composite
// control class as follows:
STDMETHOD(GetControlInfo)(CONTROLINFO* pCI)
{
// Load the accelerator table from the resource
pCI->hAccel = LoadAccelerators(_AtlBaseModule.GetResourceInstance(),
MAKEINTRESOURCE(IDR_ACCELTABLE));
if (pCI->hAccel == NULL)
return E_FAIL;
// Get the number of accelerators in the table
pCI->cAccel = (USHORT)CopyAcceleratorTable(pCI->hAccel, NULL, 0);
// The following is optional if you want your control
// to process the return and/or escape keys
// pCI.dwFlags = CTRLINFO_EATS_RETURN | CTRLINFO_EATS_ESCAPE;
pCI->dwFlags = 0;
return S_OK;
}
Gerarchia di ereditarietà
WinBase
CComCompositeControl
Requisiti
Intestazione: atlctl.h
CComCompositeControl::AdviseSinkMap
Chiamare questo metodo per consigliare o annullare la visualizzazione di tutti i controlli ospitati dal controllo composito.
HRESULT AdviseSinkMap(bool bAdvise);
Parametri
bAdvise
True se tutti i controlli devono essere consigliati; in caso contrario false.
Valore restituito
valore | Descrizione |
---|---|
S_OK |
Tutti i controlli nella mappa del sink eventi sono stati connessi o disconnessi correttamente dall'origine evento. |
E_FAIL |
Non tutti i controlli nella mappa sink eventi potrebbero essere connessi o disconnessi correttamente dall'origine evento. |
E_POINTER |
Questo errore indica in genere un problema relativo a una voce nella mappa sink eventi del controllo o a un problema relativo a un argomento modello usato in una IDispEventImpl classe o IDispEventSimpleImpl di base. |
CONNECT_E_ADVISELIMIT |
Il punto di connessione ha già raggiunto il limite di connessioni e non può più accettare. |
CONNECT_E_CANNOTCONNECT |
Il sink non supporta l'interfaccia richiesta da questo punto di connessione. |
CONNECT_E_NOCONNECTION |
Il valore del cookie non rappresenta una connessione valida. Questo errore indica in genere un problema relativo a una voce nella mappa sink eventi del controllo o a un problema relativo a un argomento modello usato in una IDispEventImpl classe o IDispEventSimpleImpl di base. |
Osservazioni:
L'implementazione di base di questo metodo cerca le voci nella mappa sink eventi. Quindi consiglia o annulla la visualizzazione dei punti di connessione agli oggetti COM descritti dalle voci sink della mappa sink dell'evento. Questo metodo membro si basa anche sul fatto che la classe derivata eredita da un'istanza di IDispEventImpl
per ogni controllo nella mappa sink che deve essere consigliato o non supervisionato.
CComCompositeControl::CalcExtent
Chiamare questo metodo per calcolare le dimensioni in unità HIMETRIC della risorsa finestra di dialogo usata per ospitare il controllo composito.
BOOL CalcExtent(SIZE& size);
Parametri
size
Riferimento a una SIZE
struttura da riempire con questo metodo.
Valore restituito
TRUE se il controllo è ospitato da una finestra di dialogo; in caso contrario FALSE.
Osservazioni:
Le dimensioni vengono restituite nel parametro size .
CComCompositeControl::Create
Questo metodo viene chiamato per creare la finestra di controllo per il controllo composito.
HWND Create(
HWND hWndParent,
RECT& /* rcPos */,
LPARAM dwInitParam = NULL);
Parametri
hWndParent
Handle per la finestra padre del controllo.
rcPos
Riservato.
dwInitParam
Dati da passare al controllo durante la creazione del controllo. I dati passati come dwInitParam verranno visualizzati come parametro LPARAM del messaggio WM_INITDIALOG , che verrà inviato al controllo composito al momento della creazione.
Valore restituito
Handle per la finestra di dialogo del controllo composito appena creato.
Osservazioni:
Questo metodo viene in genere chiamato durante l'attivazione sul posto del controllo .
CComCompositeControl::CComCompositeControl
Costruttore.
CComCompositeControl();
Osservazioni:
Inizializza i membri dati CComCompositeControl::m_hbrBackground e CComCompositeControl::m_hWndFocus su NULL.
CComCompositeControl::~CComCompositeControl
Distruttore.
~CComCompositeControl();
Osservazioni:
Elimina l'oggetto di sfondo, se esistente.
CComCompositeControl::CreateControlWindow
Chiamare questo metodo per creare la finestra di controllo e consigliare eventuali controlli ospitati.
virtual HWND CreateControlWindow(
HWND hWndParent,
RECT& rcPos);
Parametri
hWndParent
Handle per la finestra padre del controllo.
rcPos
Rettangolo di posizione del controllo composito nelle coordinate client rispetto a hWndParent.
Valore restituito
Restituisce un handle alla finestra di dialogo del controllo composito appena creato.
Osservazioni:
Questo metodo chiama CComCompositeControl::Create e CComCompositeControl::AdviseSinkMap.
CComCompositeControl::m_hbrBackground
Pennello di sfondo.
HBRUSH m_hbrBackground;
CComCompositeControl::m_hWndFocus
Handle della finestra che ha attualmente lo stato attivo.
HWND m_hWndFocus;
CComCompositeControl::SetBackgroundColorFromAmbient
Chiamare questo metodo per impostare il colore di sfondo del controllo composito usando il colore di sfondo del contenitore.
HRESULT SetBackgroundColorFromAmbient();
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Vedi anche
Classe CComControl
Nozioni fondamentali sul controllo composito
Cenni preliminari sulla classe