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 dell'Aggiunta guidata proprietà per aggiungere una proprietà stock
Aggiunta guidata proprietà modifiche per le proprietà delle scorte
Proprietà azionarie supportate dall'Aggiunta guidata proprietà
-
Nota
I controlli personalizzati di Visual Basic in genere hanno proprietà quali Top, Left, Width, Height, Align, Tag, Name, TabIndex, TabStop e Parent. I contenitori di controlli ActiveX, tuttavia, sono responsabili dell'implementazione di queste proprietà di controllo e pertanto i controlli ActiveX non devono supportare queste proprietà.
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à
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à fare clic su Didascalia.
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 Caption a , 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