Condividi tramite


Inserimento del controllo in una pagina Web (Esercitazione di ATL, parte 7)

Il controllo è stato completato. Per visualizzare il lavoro del controllo in una situazione reale, inserirlo in una pagina Web. Un file HTML che contiene il controllo è stato creato al momento della definizione del controllo. Aprire il file PolyCtl.htm da Esplora soluzioni ed è possibile visualizzare il controllo in una pagina Web.

In questo passaggio si aggiungono funzionalità al controllo e si crea lo script della pagina Web per rispondere agli eventi. Si modificherà anche il controllo per informare Internet Explorer che il controllo è sicuro per la creazione di script.

Aggiunta di nuove funzionalità

Per aggiungere funzionalità di controllo

Aprire PolyCtl.cpp e sostituire il codice seguente:

if (PtInRegion(hRgn, xPos, yPos))
  Fire_ClickIn(xPos, yPos);
else
  Fire_ClickOut(xPos, yPos);

con

short temp = m_nSides;
if (PtInRegion(hRgn, xPos, yPos))
{
  Fire_ClickIn(xPos, yPos);
  put_Sides(++temp);
}
else
{
  Fire_ClickOut(xPos, yPos);
  put_Sides(--temp);
}

La forma ora aggiungerà o rimuoverà i lati a seconda della posizione in cui si fa clic.

Creazione di script per la pagina Web

Il controllo non esegue ancora alcuna operazione, quindi modificare la pagina Web per rispondere agli eventi inviati.

Per creare script per la pagina Web

  1. Aprire PolyCtl.htm e selezionare Visualizzazione HTML. Aggiungere le righe seguenti al codice HTML. Devono essere aggiunti dopo </OBJECT> ma prima </BODY>di .

    <SCRIPT LANGUAGE="VBScript">
    <!--
        Sub PolyCtl_ClickIn(x, y)
            MsgBox("Clicked (" & x & ", " & y & ") - adding side")
        End Sub
        Sub PolyCtl_ClickOut(x, y)
            MsgBox("Clicked (" & x & ", " & y & ") - removing side")
        End Sub
    -->
    </SCRIPT>
    
  2. Salvare il file HTM.

È stato aggiunto codice VBScript che ottiene la proprietà Sides dal controllo . Aumenta il numero di lati di uno se si fa clic all'interno del controllo. Se si fa clic all'esterno del controllo, si riduce il numero di lati di uno.

Indica che il controllo è sicuro per lo scripting

È possibile visualizzare la pagina Web solo con il controllo in Internet Explorer. Altri browser non supportano più i controlli ActiveX a causa di punti deboli della sicurezza.

Nota

Se il controllo non è visibile, è necessario che alcuni browser richiedano regolazioni delle impostazioni per eseguire controlli ActiveX. Vedere la documentazione del browser su come abilitare i controlli ActiveX.

In base alle impostazioni di sicurezza correnti di Internet Explorer, è possibile che venga visualizzata una finestra di dialogo Avviso di sicurezza. Indica che il controllo potrebbe non essere sicuro per la creazione di script e potrebbe potenzialmente causare danni. Ad esempio, se si disponesse di un controllo che visualizzava un file, ma aveva anche un Delete metodo che ha eliminato un file, sarebbe sicuro se fosse stato appena visualizzato in una pagina. Tuttavia, non sarebbe sicuro creare script, perché qualcuno potrebbe chiamare il Delete metodo .

Importante

Per questa esercitazione, è possibile modificare le impostazioni di sicurezza in Internet Explorer per eseguire controlli ActiveX non contrassegnati come sicuri. In Pannello di controllo fare clic su Proprietà Internet e fare clic su Sicurezza per modificare le impostazioni appropriate. Dopo aver completato l'esercitazione, ripristinare lo stato originale delle impostazioni di sicurezza.

È possibile avvisare a livello di codice Internet Explorer che non è necessario visualizzare la finestra di dialogo Avviso di sicurezza per questo particolare controllo. È possibile farlo usando l'interfaccia IObjectSafety . ATL fornisce un'implementazione di questa interfaccia nella classe IObjectSafetyImpl. Per aggiungere l'interfaccia al controllo, aggiungere IObjectSafetyImpl all'elenco di classi ereditate e aggiungervi una voce nella mappa COM.

Per aggiungere IObjectSafetyImpl al controllo

  1. Aggiungere la riga seguente alla fine dell'elenco delle classi ereditate in PolyCtl.h e aggiungere una virgola alla riga precedente:

    public IObjectSafetyImpl<CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>
    
  2. Aggiungere la riga seguente alla mappa COM in PolyCtl.h:

    COM_INTERFACE_ENTRY(IObjectSafety)
    

Compilazione e test del controllo

Compilare il controllo . Al termine della compilazione, aprire di nuovo PolyCtl.htm nella visualizzazione del browser. Questa volta, la pagina Web deve essere visualizzata direttamente senza la finestra di dialogo Avviso di sicurezza. Se si fa clic all'interno del poligono, il numero di lati aumenta di uno. Fare clic all'esterno del poligono per ridurre il numero di lati.

Torna al passaggio 6

Passaggi successivi

Questo passaggio conclude l'esercitazione su ATL. Per i collegamenti ad altre informazioni su ATL, vedere la pagina iniziale di ATL.

Vedi anche

Esercitazione