Controlli ActiveX MFC: Metodi personalizzate di aggiunta
I metodi personalizzati sono diversi dai metodi predefiniti in quanto non sono implementati da COleControl.È necessario fornire un'implementazione per ogni metodo che personalizzato aggiunto al controllo.
Un utente del controllo ActiveX possibile chiamare un metodo personalizzato in qualsiasi momento per eseguire azioni specifiche del controllo.La voce della mappa di invio per i metodi personalizzati è nel formato DISP_FUNCTION.
Aggiunta di un metodo personalizzato con l'Aggiunta guidata metodo
La procedura riportata di seguito viene illustrato come aggiungere un metodo personalizzato PtInCircle al codice di base di un controllo ActiveX.PtInCircle determina se le coordinate passate al controllo sono all'interno o a circle.Questa procedura può essere utilizzata per aggiungere altri metodi personalizzati.Sostituire il nome del metodo personalizzato e i relativi parametri per il nome del metodo e i parametri di PtInCircle.
[!NOTA]
In questo esempio viene utilizzata la funzione di InCircle gli eventi dell'articolo.Per ulteriori informazioni su questa funzione, vedere l'articolo Controlli ActiveX MFC: Aggiunta di eventi personalizzati a un controllo ActiveX.
Per aggiungere il metodo personalizzato di PtInCircle utilizzo di aggiunta guidata metodo
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 per il controllo (il secondo nodo il nodo della libreria) per aprire il menu di scelta rapida.
Dal menu di scelta rapida scegliere, Aggiungi quindi fare clic su Add Method.
Verrà aperto aggiunta guidata metodo.
Nella casella di Nome metodo , tipo PtInCircle.
Nella casella di Internal Name , digitare il nome della funzione interna del metodo o utilizzare il valore predefinito (in questo caso, PtInCircle).
Nella casella di Tipo restituito , fare clic su VARIANT_BOOL per il tipo restituito del metodo.
Utilizzo dei controlli di Nome parametro e di Tipo parametro , aggiungere un parametro denominato xCoord (tipo OLE_XPOS_PIXELS).
Utilizzo dei controlli di Nome parametro e di Tipo parametro , aggiungere un parametro denominato yCoord(tipo OLE_YPOS_PIXELS).
Fare clic su Fine.
Modifiche di aggiunta guidata metodo per i metodi personalizzati
Quando si aggiunge un metodo personalizzato, aggiunta guidata metodo esegue alcune modifiche all'inizio della classe del controllo (. h) e file di implementazione (.CPP).La riga seguente viene aggiunta alla dichiarazione della mappa di inviointestazione della classe del controllo (. h) file:
VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Questo codice dichiara un metodo PtInCirclechiamato gestore di invio.Questa funzione può essere chiamata dall'utente del controllo mediante il nome esterno PtInCircle.
La riga seguente viene aggiunto al file .IDL del controllo:
[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Questa riga assegna al metodo di PtInCircle un numero ID specifici, la posizione del metodo nei metodi di aggiunta guidata metodo e l'elenco di proprietà.Poiché l'Aggiunta guidata metodo è stata utilizzata per aggiungere il metodo personalizzato, la voce per è stata aggiunta automaticamente al file .IDL del progetto.
Inoltre, la riga seguente, che si trova nel file di implementazione (.CPP) della classe del controllo, viene aggiunto alla mappa di invio del controllo:
DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
La macro di DISP_FUNCTION esegue il mapping del metodo PtInCircle alla funzione di gestione del controllo, PtInCircle, dichiara il tipo restituito per essere VARIANT_BOOLe vengono dichiarate due parametri di tipo VTS_XPOS_PIXELS e VTS_YPOSPIXELS da passare a PtInCircle.
Infine, aggiunta guidata metodo aggiunge la funzione CSampleCtrl::PtInCircle stub alla fine del file dell'implementazione del controllo (.CPP).Per PtInCircle funzioni come indicato in precedenza, è necessario modificare l'elemento come segue:
VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CPoint point(xCoord, yCoord);
return InCircle(point);
}
Vedere anche
Riferimenti
Icone di Visualizzazione classi e Visualizzatore oggetti