Share via


Controlli ActiveX MFC: aggiunta di metodi personalizzati

I metodi personalizzati differiscono dai metodi stock in quanto non sono già implementati da COleControl. È necessario fornire l'implementazione per ogni metodo personalizzato aggiunto al controllo.

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.

Un utente del controllo ActiveX può chiamare un metodo personalizzato in qualsiasi momento per eseguire azioni specifiche del controllo. La voce della mappa dispatch per i metodi personalizzati è del modulo DISP_FUNCTION.

Aggiunta di un metodo personalizzato con l'Aggiunta guidata metodo

La procedura seguente illustra l'aggiunta del metodo personalizzato PtInCircle allo scheletro di un controllo ActiveX. PtInCircle determina se le coordinate passate al controllo si trovano all'interno o all'esterno del cerchio. Questa stessa procedura può essere usata anche per aggiungere altri metodi personalizzati. Sostituire il nome del metodo personalizzato e i relativi parametri per il nome e i parametri del metodo PtInCircle.

Nota

In questo esempio viene usata la InCircle funzione dell'articolo Eventi. Per altre informazioni su questa funzione, vedere l'articolo Controlli ActiveX MFC: Aggiunta di eventi personalizzati a un controllo ActiveX.

Per aggiungere il metodo personalizzato PtInCircle tramite l'Aggiunta guidata metodo

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

    Verrà aperta la Procedura guidata Aggiungi metodo.

  5. Nella casella Nome metodo digitare PtInCircle.

  6. Nella casella Nome interno digitare il nome della funzione interna del metodo o usare il valore predefinito (in questo caso PtInCircle).

  7. Nella casella Tipo restituito fare clic su VARIANT_BOOL per il tipo restituito del metodo.

  8. Usando i controlli Tipo di parametro e Nome parametro, aggiungere un parametro denominato xCoord (tipo OLE_XPOS_PIXELS).

  9. Usando i controlli Tipo di parametro e Nome parametro, aggiungere un parametro denominato yCoord (tipo OLE_YPOS_PIXELS).

  10. Fare clic su Fine.

Aggiunta guidata metodo modifiche per metodi personalizzati

Quando si aggiunge un metodo personalizzato, l'Aggiunta guidata metodo apporta alcune modifiche all'intestazione della classe di controllo (. H) e implementazione (. File CPP). La riga seguente viene aggiunta alla dichiarazione della mappa dispatch nell'intestazione della classe di controllo (. H) file:

VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Questo codice dichiara un gestore del metodo dispatch denominato PtInCircle. Questa funzione può essere chiamata dall'utente del controllo usando il nome PtInCircleesterno .

La riga seguente viene aggiunta all'oggetto del controllo . File IDL:

[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Questa riga assegna al PtInCircle metodo un numero ID specifico, la posizione del metodo nell'elenco Aggiungi metodo guidato metodi e proprietà. Poiché l'Aggiunta guidata metodo è stata usata per aggiungere il metodo personalizzato, la voce per la quale è stata aggiunta automaticamente all'oggetto del progetto. File IDL.

Inoltre, la riga seguente, che si trova nell'implementazione (. Il file CPP) della classe del controllo viene aggiunto alla mappa di distribuzione del controllo:

DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

La macro DISP_FUNCTION esegue il mapping del metodo PtInCircle alla funzione del gestore del controllo, PtInCircle, dichiara il tipo restituito da VARIANT_BOOL e dichiara due parametri di tipo VTS_XPOS_PIXELS e VTS_YPOSPIXELS da passare a PtInCircle.

Infine, l'Aggiunta guidata metodo aggiunge la funzione CSampleCtrl::PtInCircle stub alla fine dell'implementazione del controllo (. File CPP). Per PtInCircle funzionare come indicato in precedenza, deve essere modificato come indicato di seguito:

VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   CPoint point(xCoord, yCoord);
   return InCircle(point);
}

Vedi anche

Controlli ActiveX MFC
Icone di Visualizzazione classi e Visualizzatore oggetti