Condividi tramite


Controlli ActiveX MFC: aggiunta di proprietà predefinite

Le proprietà predefinite differiscono dalle proprietà personalizzate in quanto sono già implementate dalla classe COleControl. COleControl contiene funzioni membro predefinite che supportano proprietà comuni per il controllo. Alcune proprietà comuni includono il didascalia del controllo e i colori di primo piano e di sfondo. Per informazioni su altre proprietà azionarie, vedere Proprietà azionarie supportate dall'Aggiunta guidata proprietà più avanti in questo articolo. Le voci della mappa dispatch per le proprietà delle scorte sono sempre precedute da DISP_STOCKPROP.

Questo articolo descrive come aggiungere una proprietà stock (in questo caso Caption) a un controllo ActiveX usando l'Aggiunta guidata proprietà e illustra le modifiche del codice risultanti. Gli argomenti includono:

Utilizzo della Procedura guidata Aggiungi proprietà per aggiungere una proprietà stock

L'aggiunta di proprietà stock richiede meno codice rispetto all'aggiunta di proprietà personalizzate perché il supporto per la proprietà viene gestito automaticamente da COleControl. La procedura seguente illustra l'aggiunta della proprietà Stock Caption a un framework di controllo ActiveX e può essere usata anche per aggiungere altre proprietà azionarie. Sostituire il nome della proprietà stock selezionata per Caption.

Per aggiungere la proprietà Titolo azionario utilizzando l'Aggiunta guidata proprietà

  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à fare clic su Didascalia.

  6. Fare clic su Fine.

Aggiunta guidata proprietà modifiche per le proprietà delle azioni

Poiché COleControl supporta le proprietà predefinite, l'Aggiunta guidata proprietà non modifica la dichiarazione di classe in alcun modo, ma aggiunge la proprietà alla mappa di distribuzione. L'Aggiunta guidata proprietà aggiunge la riga seguente alla mappa di distribuzione del controllo, che si trova nell'implementazione (. File CPP):

DISP_STOCKPROP_CAPTION()

La riga seguente viene aggiunta alla descrizione dell'interfaccia del controllo (. File IDL):

[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;

Questa riga assegna alla proprietà Caption un ID specifico. Si noti che la proprietà è associabile e richiederà l'autorizzazione dal database prima di modificare il valore.

In questo modo la proprietà Caption viene resa disponibile agli utenti del controllo. Per usare il valore di una proprietà stock, accedere a una variabile membro o a una funzione membro della COleControl classe base. Per altre informazioni su queste variabili membro e sulle funzioni membro, vedere la sezione successiva Proprietà predefinite supportate dall'Aggiunta guidata proprietà.

Proprietà azionarie supportate dall'Aggiunta guidata proprietà

La COleControl classe fornisce nove proprietà azionarie. È possibile aggiungere le proprietà desiderate tramite l'Aggiunta guidata proprietà.

Proprietà Invio della voce della mappa Come accedere al valore
Appearance DISP_STOCKPROP_APPEARANCE( ) Valore accessibile come m_sAppearance.
BackColor DISP_STOCKPROP_BACKCOLOR( ) Valore accessibile chiamando GetBackColor.
BorderStyle DISP_STOCKPROP_BORDERSTYLE( ) Valore accessibile come m_sBorderStyle.
Caption DISP_STOCKPROP_CAPTION( ) Valore accessibile chiamando InternalGetText.
Enabled DISP_STOCKPROP_ENABLED( ) Valore accessibile come m_bEnabled.
Font DISP_STOCKPROP_FONT( ) Vedere l'articolo Controlli ActiveX MFC: Uso dei tipi di carattere per l'utilizzo.
ForeColor DISP_STOCKPROP_FORECOLOR( ) Valore accessibile chiamando GetForeColor.
hWnd DISP_STOCKPROP_HWND( ) Valore accessibile come m_hWnd.
Text DISP_STOCKPROP_TEXT( ) Valore accessibile chiamando InternalGetText. Questa proprietà è uguale Captiona , ad eccezione del nome della proprietà.
ReadyState DISP_STOCKPROP_READYSTATE() Valore accessibile come m_lReadyState o GetReadyState

Proprietà e notifica delle azioni

La maggior parte delle proprietà azionarie dispone di funzioni di notifica che possono essere sottoposte a override. Ad esempio, ogni volta che la BackColor proprietà viene modificata, viene chiamata la OnBackColorChanged funzione (una funzione membro della classe di controllo). L'implementazione predefinita (in COleControl) chiama InvalidateControl. Eseguire l'override di questa funzione se si desidera eseguire azioni aggiuntive in risposta a questa situazione.

Proprietà colore

È possibile utilizzare le proprietà e BackColor le ForeColor scorte o le proprietà dei colori personalizzate quando si disegna il controllo. Per usare una proprietà color, chiamare la funzione membro COleControl::TranslateColor . I parametri di questa funzione sono il valore della proprietà color e un handle di tavolozza facoltativo. Il valore restituito è un valore COLORREF che può essere passato alle funzioni GDI, ad esempio SetTextColor e CreateSolidBrush.

I valori di colore per le proprietà e BackColor le ForeColor scorte sono accessibili chiamando rispettivamente la GetForeColor funzione o .GetBackColor

Nell'esempio seguente viene illustrato l'utilizzo di queste due proprietà di colore durante il disegno di un controllo . Inizializza una variabile COLORREF temporanea e un CBrush oggetto con chiamate a TranslateColor: uno utilizzando la ForeColor proprietà e l'altro usando la BackColor proprietà . Viene quindi utilizzato un oggetto temporaneo CBrush per disegnare il rettangolo del controllo e il colore del testo viene impostato utilizzando la ForeColor proprietà .

CBrush bkBrush(TranslateColor(GetBackColor()));
COLORREF clrFore = TranslateColor(GetForeColor());
pdc->FillRect(rcBounds, &bkBrush);
pdc->SetTextColor(clrFore);
pdc->DrawText(InternalGetText(), -1, rcBounds, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

Vedi anche

Controlli ActiveX MFC
Controlli ActiveX MFC: proprietà
Controlli ActiveX MFC: metodi
Classe COleControl