Share via


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

  1. Caricare il progetto del controllo.

  2. In Visualizzazione classi, espandere il nodo di libreria del controllo.

  3. 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.

  4. Scegliere Aggiungi dal menu di scelta rapida e quindi fare clic su Aggiungi proprietà.

    Verrà visualizzata l'Aggiunta guidata proprietà.

  5. Nella casella Nome proprietà digitare il nome della proprietà.

  6. Per Tipo di implementazione, fare clic su Metodi Get/Set.

  7. Nella casella Tipo di proprietà selezionare il tipo appropriato per la proprietà .

  8. 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.

  9. 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