Controlli ActiveX MFC: implementazione di proprietà avanzate
Questo articolo descrive gli argomenti relativi all'implementazione di proprietà avanzate in un controllo ActiveX.
Importante
ActiveX è una tecnologia legacy che non deve essere usata per il nuovo sviluppo. Per altre informazioni sulle tecnologie moderne che sostituisce ActiveX, vedere Controlli ActiveX.
Proprietà di sola lettura e di sola scrittura
L'Aggiunta guidata proprietà fornisce un metodo rapido e semplice per implementare proprietà di sola lettura o di sola scrittura per il controllo.
Per implementare una proprietà di sola lettura o di sola scrittura
Caricare il progetto del controllo.
In Visualizzazione classi, espandere il nodo di libreria del controllo.
Fare clic con il pulsante destro del mouse sul nodo interfaccia del controllo (il secondo nodo del nodo di libreria) per aprire il menu di scelta rapida.
Scegliere Aggiungi dal menu di scelta rapida e quindi fare clic su Aggiungi proprietà.
Verrà visualizzata l'Aggiunta guidata proprietà.
Nella casella Nome proprietà digitare il nome della proprietà.
Per Tipo di implementazione, fare clic su Metodi Get/Set.
Nella casella Tipo di proprietà selezionare il tipo appropriato per la proprietà .
Se si desidera una proprietà di sola lettura, deselezionare il nome della funzione Set. Se si desidera una proprietà di sola scrittura, deselezionare il nome della funzione Get.
Fare clic su Fine.
Quando si esegue questa operazione, l'Aggiunta guidata proprietà inserisce la funzione SetNotSupported
o GetNotSupported
nella voce della mappa dispatch al posto di una normale funzione Set o Get.
Se si desidera modificare una proprietà esistente in modo che sia di sola lettura o di sola scrittura, è possibile modificare manualmente la mappa dispatch e rimuovere la funzione Set o Get non necessaria dalla classe di controllo.
Se si desidera che una proprietà sia di sola lettura o di sola scrittura in modo condizionale (ad esempio, solo quando il controllo funziona in una determinata modalità), è possibile fornire la funzione Set o Get, come di consueto, e chiamare la SetNotSupported
funzione o GetNotSupported
, se appropriato. Ad esempio:
void CMyAxUICtrl::SetMyProperty(SHORT newVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (m_bReadOnlyMode) // some control-specific state
{
SetNotSupported();
}
else
{
m_iPropVal = newVal; // set property as normal
SetModifiedFlag();
}
}
Questo esempio di codice chiama SetNotSupported
se il m_bReadOnlyMode
membro dati è TRUE. Se FAL edizione Standard, la proprietà viene impostata sul nuovo valore.
Restituzione di codici di errore da una proprietà
Per indicare che si è verificato un errore durante il tentativo di ottenere o impostare una proprietà, usare la COleControl::ThrowError
funzione , che accetta uno SCODE (codice di stato) come parametro. È possibile usare uno SCODE predefinito o definirne uno personalizzato. Per un elenco di scoDe predefinite e istruzioni per la definizione di scoDe personalizzate, vedere Gestione degli errori nel controllo ActiveX nell'articolo Controlli ActiveX: Argomenti avanzati.
Le funzioni helper esistono per gli SCODE predefiniti più comuni, ad esempio COleControl::SetNotSupported, COleControl::GetNotSupported e COleControl::SetNotPermitted.
Nota
ThrowError
è progettato per essere usato solo come mezzo per restituire un errore dall'interno della funzione Get o Set di una proprietà o un metodo di automazione. Queste sono le uniche volte in cui il gestore eccezioni appropriato sarà presente nello stack.
Per altre informazioni sulla segnalazione di eccezioni in altre aree del codice, vedere COleControl::FireError e la sezione Gestione degli errori nel controllo ActiveX nell'articolo Controlli ActiveX: Argomenti avanzati.
Vedi anche
Controlli ActiveX MFC
Controlli ActiveX MFC: proprietà
Controlli ActiveX MFC: metodi
Classe COleControl