Classe CComControl
Questa classe fornisce metodi per la creazione e la gestione di controlli ATL.
Importante
Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.
Sintassi
template <class T, class WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
public WinBase;
Parametri
T
Classe che implementa il controllo.
WinBase
Classe di base che implementa le funzioni di windowing. L'impostazione predefinita è CWindowImpl.
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CComControl::CComControl | Costruttore. |
Metodi pubblici
Nome | Descrizione |
---|---|
CComControl::ControlQueryInterface | Recupera un puntatore all'interfaccia richiesta. |
CComControl::CreateControlWindow | Crea una finestra per il controllo . |
CComControl::FireOnChanged | Notifica al sink del contenitore che una proprietà del controllo è stata modificata. |
CComControl::FireOnRequestEdit | Notifica al sink del contenitore che una proprietà di controllo sta per modificare e che l'oggetto chiede al sink come procedere. |
CComControl::MessageBox | Chiamare questo metodo per creare, visualizzare e gestire una finestra di messaggio. |
Osservazioni:
CComControl
è un set di funzioni helper di controllo utili e membri dati essenziali per i controlli ATL. Quando si crea un controllo standard o un controllo DHTML tramite la Creazione guidata controllo ATL, la procedura guidata deriva automaticamente la classe da CComControl
. CComControl
deriva la maggior parte dei relativi metodi da CComControlBase.
Per altre informazioni sulla creazione di un controllo, vedere l'esercitazione su ATL. Per altre informazioni sulla Creazione guidata progetto ATL, vedere l'articolo Creazione di un progetto ATL.
Per una dimostrazione di CComControl
metodi e membri dati, vedere l'esempio CIRC .
Gerarchia di ereditarietà
WinBase
CComControl
Requisiti
Intestazione: atlctl.h
CComControl::CComControl
Costruttore.
CComControl();
Osservazioni:
Chiama il costruttore CComControlBase , passando il m_hWnd
membro dati ereditato tramite CWindowImpl.
CComControl::ControlQueryInterface
Recupera un puntatore all'interfaccia richiesta.
virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);
Parametri
iid
[in] GUID dell'interfaccia richiesta.
ppv
[out] Puntatore al puntatore dell'interfaccia identificato da iid o NULL se l'interfaccia non viene trovata.
Osservazioni:
Gestisce solo le interfacce nella tabella mappa COM.
Esempio
// Retrieve the control's IOleObject interface. Note interface
// is automatically released when pOleObject goes out of scope
CComPtr<IOleObject> pOleObject;
ControlQueryInterface(IID_IOleObject, (void**)&pOleObject);
CComControl::CreateControlWindow
Per impostazione predefinita, crea una finestra per il controllo chiamando CWindowImpl::Create
.
virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);
Parametri
hWndParent
[in] Handle nella finestra padre o proprietario. È necessario specificare un handle di finestra valido. La finestra di controllo è limitata all'area della finestra padre.
rcPos
[in] Dimensioni iniziali e posizione della finestra da creare.
Osservazioni:
Eseguire l'override di questo metodo se si desidera eseguire operazioni diverse da creare una singola finestra, ad esempio per creare due finestre, una delle quali diventa una barra degli strumenti per il controllo.
Esempio
RECT rc = {10,10,210,110};
HWND hwndParent, hwndControl;
// get HWND of control's parent window from IOleInPlaceSite interface
m_spInPlaceSite->GetWindow(&hwndParent);
hwndControl = CreateControlWindow(hwndParent, rc);
CComControl::FireOnChanged
Notifica al sink del contenitore che una proprietà del controllo è stata modificata.
HRESULT FireOnChanged(DISPID dispID);
Parametri
dispID
[in] Identificatore della proprietà modificata.
Valore restituito
Uno dei valori HRESULT standard.
Osservazioni:
Se la classe del controllo deriva da IPropertyNotifySink, questo metodo chiama CFirePropNotifyEvent::FireOnChanged per notificare a tutte le interfacce connesse IPropertyNotifySink
che la proprietà del controllo specificata è stata modificata. Se la classe di controllo non deriva da IPropertyNotifySink
, questo metodo restituisce S_OK.
Questo metodo è sicuro da chiamare anche se il controllo non supporta i punti di connessione.
Esempio
STDMETHODIMP CMyControl::put_MyText(BSTR newVal)
{
// store newVal in CComBstr member
m_bstrMyText = newVal;
// note the DISPID for the MyText property is 3 in this example
FireOnChanged(3);
return S_OK;
}
CComControl::FireOnRequestEdit
Notifica al sink del contenitore che una proprietà di controllo sta per modificare e che l'oggetto chiede al sink come procedere.
HRESULT FireOnRequestEdit(DISPID dispID);
Parametri
dispID
[in] Identificatore della proprietà che sta per cambiare.
Valore restituito
Uno dei valori HRESULT standard.
Osservazioni:
Se la classe di controllo deriva da IPropertyNotifySink, questo metodo chiama CFirePropNotifyEvent::FireOnRequestEdit per notificare a tutte le interfacce connesse IPropertyNotifySink
che la proprietà del controllo specificata sta per essere modificata. Se la classe di controllo non deriva da IPropertyNotifySink
, questo metodo restituisce S_OK.
Questo metodo è sicuro da chiamare anche se il controllo non supporta i punti di connessione.
Esempio
STDMETHODIMP CMyControl::put_MyTitle(BSTR newVal)
{
// the DISPID for MyTitle in this example is 4
DISPID dispID = 4;
// make sure we can change the property
if (FireOnRequestEdit(dispID) == S_FALSE)
return S_FALSE;
// store newVal in CComBstr member
m_bstrMyTitle = newVal;
// signal that the property has been changed
FireOnChanged(dispID);
return S_OK;
}
CComControl::MessageBox
Chiamare questo metodo per creare, visualizzare e gestire una finestra di messaggio.
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = _T(""),
UINT nType = MB_OK);
Parametri
lpszText
Testo da visualizzare nella finestra di messaggio.
lpszCaption
Titolo della finestra di dialogo. Se NULL (impostazione predefinita), viene usato il titolo "Error".
nType
Specifica il contenuto e il comportamento della finestra di dialogo. Per un elenco delle diverse finestre di messaggio disponibili, vedere la voce MessageBox nella documentazione di Windows SDK. Il valore predefinito fornisce un semplice pulsante OK .
Valore restituito
Restituisce un valore intero che specifica uno dei valori delle voci di menu elencate in MessageBox nella documentazione di Windows SDK.
Osservazioni:
MessageBox
è utile sia durante lo sviluppo che come modo semplice per visualizzare un messaggio di errore o di avviso all'utente.
Vedi anche
Classe CWindowImpl
Cenni preliminari sulla classe
Classe CComControlBase
Classe CComCompositeControl