Controlli ActiveX MFC: aggiunta di proprietà predefinite
Le proprietà predefinite differiscono dalle proprietà personalizzate in quanto sono già implementate dalla classe COleControl. COleControl contiene le funzioni membro predefinite che supportano le proprietà comuni per il controllo. Alcune proprietà comuni includono la barra del titolo del controllo e ai colori di primo piano e di sfondo. Per informazioni su altre proprietà predefinite, vedere più avanti Proprietà predefinite supportate dall'Aggiunta guidata proprietà in questo articolo. Le voci della mappa di invio per le proprietà predefinite sono precedute sempre da DISP_STOCKPROP.
In questo articolo viene descritto come aggiungere una proprietà predefinita (in questo caso, caption) a un controllo ActiveX mediante l'aggiunta guidata proprietà e vengono illustrate le modifiche con estensione codice. Gli argomenti trattati includono
Utilizzo dell'Aggiunta guidata proprietà per aggiungere una proprietà predefinita
Modifiche dell'Aggiunta guidata proprietà per le proprietà predefinite
Proprietà predefinite supportate dall'Aggiunta guidata proprietà
Proprietà predefinite e notifica
Proprietà color
Nota
I controlli personalizzati di Visual Basic in genere presentano proprietà quali top, left, la larghezza, altezza, true, label, name, TabIndex, tabstop e padre.I contenitori di controlli ActiveX, tuttavia, sono responsabili dell'implementazione delle proprietà del controllo e pertanto i controlli ActiveX non supportino queste proprietà.
Utilizzo dell'Aggiunta guidata proprietà per aggiungere una proprietà predefinita
L'aggiunta di proprietà predefinite richiede meno codice che viene aggiunta di proprietà personalizzate perché il supporto per la proprietà viene gestito automaticamente da COleControl. La procedura riportata di seguito viene illustrata l'aggiunta di proprietà predefinito della barra del titolo a un framework di controlli ActiveX e può essere utilizzata per aggiungere altre proprietà predefinite. Sostituire il nome della proprietà predefinito selezionato per la barra del titolo.
Per aggiungere la proprietà predefinita della barra del titolo mediante l'aggiunta guidata proprietà
Caricare il progetto del controllo.
In Visualizzazione classi, espandere il nodo della libreria del controllo.
Fare clic con il pulsante destro del mouse sul nodo dell'interfaccia del controllo (il secondo nodo il nodo della libreria) per aprire il menu di scelta rapida.
Dal menu di scelta rapida, fare clic Aggiungi quindi fare clic Aggiungi proprietà.
Verrà aperto Aggiunta guidata proprietà.
Nella casella di Nome proprietà, fare clic Titolo.
Scegliere Fine.
Modifiche dell'Aggiunta guidata proprietà per le proprietà predefinite
Poiché le proprietà predefinite il tipo di COleControl, l'aggiunta guidata proprietà non cambia la dichiarazione di classe in alcun modo; aggiungi proprietà alla mappa submit. L'aggiunta guidata proprietà aggiungere la seguente riga alla mappa di invio del controllo, che si trova nel file di implementazione (.CPP):
DISP_STOCKPROP_CAPTION()
La riga seguente viene aggiunto al file di descrizione dell'interfaccia del controllo (.IDL):
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
Questa riga assegnata alla proprietà caption un ID specifica Si noti che la proprietà è associabile e richiederà l'autorizzazione dal database prima di modificare il valore.
Ciò rende disponibile la proprietà caption degli utenti del controllo. Per utilizzare il valore di una proprietà predefinita, accedere a una variabile membro o una funzione membro della classe base di COleControl. Per ulteriori informazioni su questi membri variabili e funzioni membro, vedere la sezione successiva, immagazzinano le proprietà supportate dall'Aggiunta guidata proprietà.
Immagazzini le proprietà supportate dall'Aggiunta guidata proprietà
La classe di COleControl fornisce nove proprietà predefinite. È possibile aggiungere proprietà desiderata tramite l'aggiunta guidata proprietà.
Proprietà |
Voce di mapping di invio |
Accedere come valore |
---|---|---|
Aspetto |
DISP_STOCKPROP_APPEARANCE( ) |
Valore accessibili come m_sAppearance. |
BackColor |
DISP_STOCKPROP_BACKCOLOR( ) |
Valore accessibile chiamando GetBackColor. |
BorderStyle |
DISP_STOCKPROP_BORDERSTYLE( ) |
Valore accessibili come m_sBorderStyle. |
Didascalia |
DISP_STOCKPROP_CAPTION( ) |
Valore accessibile chiamando InternalGetText. |
Enabled |
DISP_STOCKPROP_ENABLED( ) |
Valore accessibili come m_bEnabled. |
Tipo di carattere |
DISP_STOCKPROP_FONT( ) |
Vedere l'articolo Controlli ActiveX MFC: Utilizzo dei tipi di carattere per l'utilizzo. |
ForeColor |
DISP_STOCKPROP_FORECOLOR( ) |
Stimare accessibile chiamando GetForeColor. |
hWnd |
DISP_STOCKPROP_HWND( ) |
Stimare accessibili come m_hWnd. |
Testo |
DISP_STOCKPROP_TEXT( ) |
Valore accessibile chiamando InternalGetText. Questa proprietà è la stessa di Titolo, fatta eccezione per il nome della proprietà. |
ReadyState |
DISP_STOCKPROP_READYSTATE() |
Valore accessibili come m_lReadyState o GetReadyState |
Proprietà predefinite e notifica
La maggior parte delle proprietà predefinite presentano funzioni di notifica che è possibile eseguire l'override. Ad esempio, ogni volta che la proprietà di BackColor viene modificata, la funzione di OnBackColorChanged (una funzione membro della classe del controllo) viene chiamata. L'implementazione predefinita (in COleControl) chiama InvalidateControl. L'override della funzione se si desidera intraprendere azioni aggiuntive in risposta a questa situazione.
Proprietà color
È possibile utilizzare ForeColor e le proprietà predefiniti di BackColor, o le proprietà di colore personalizzate quando si disegna il controllo. Per utilizzare una proprietà color, chiamare la funzione membro di COleControl::TranslateColor. I parametri della funzione vengono il valore della proprietà color e handle facoltative della tavolozza. Il valore restituito è un valore di COLORREF che può essere passato a funzioni GDI, come SetTextColor e CreateSolidBrush.
I valori di colore per ForeColor e le proprietà predefiniti di BackColor avviene chiamando GetForeColor o la funzione di GetBackColor, rispettivamente.
Il seguente esempio viene illustrato l'utilizzo di queste due proprietà color quando si disegna un controllo. Inizializza una variabile temporanea di COLORREF e un oggetto di CBrush con chiamate a TranslateColor: uno using the ForeColor e l'altro using the BackColor. Un oggetto temporaneo di CBrush quindi utilizzato per disegnare il rettangolo del controllo e il colore del testo viene impostato utilizzando la proprietà di ForeColor.
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);