Umieszczanie kontrolki na stronie sieci Web (ALT — Samouczek, część 7)
Kontrolka została zakończona. Aby zobaczyć swoją pracę kontrolną w rzeczywistej sytuacji, umieść ją na stronie internetowej. Plik HTML zawierający kontrolkę został utworzony podczas definiowania kontrolki. Otwórz plik PolyCtl.htm z Eksplorator rozwiązań i możesz wyświetlić kontrolkę na stronie sieci Web.
W tym kroku dodasz funkcje do kontrolki i skryptu strony sieci Web w celu reagowania na zdarzenia. Zmodyfikujesz również kontrolkę, aby poinformować program Internet Explorer, że kontrolka jest bezpieczna do obsługi skryptów.
Dodawanie nowych funkcji
Aby dodać funkcje sterowania
Otwórz PolyCtl.cpp i zastąp następujący kod:
if (PtInRegion(hRgn, xPos, yPos))
Fire_ClickIn(xPos, yPos);
else
Fire_ClickOut(xPos, yPos);
with
short temp = m_nSides;
if (PtInRegion(hRgn, xPos, yPos))
{
Fire_ClickIn(xPos, yPos);
put_Sides(++temp);
}
else
{
Fire_ClickOut(xPos, yPos);
put_Sides(--temp);
}
Kształt będzie teraz dodawać lub usuwać boki w zależności od tego, gdzie klikniesz.
Wykonywanie skryptów na stronie sieci Web
Kontrolka jeszcze nic nie robi, więc zmień stronę sieci Web, aby odpowiadała na wysyłane zdarzenia.
Aby uruchomić skrypt strony sieci Web
Otwórz PolyCtl.htm i wybierz widok HTML. Dodaj następujące wiersze do kodu HTML. Należy je dodać po
</OBJECT>
, ale przed</BODY>
.<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>
Zapisz plik HTM.
Dodano kod VBScript, który pobiera właściwość Sides z kontrolki. Zwiększa liczbę boków po jednej, jeśli klikniesz wewnątrz kontrolki. Jeśli klikniesz kontrolkę poza kontrolką, zmniejszysz liczbę boków o jedną.
Wskazuje, że kontrolka jest bezpieczna dla skryptów
Stronę internetową można wyświetlić tylko za pomocą kontrolki w programie Internet Explorer. Inne przeglądarki nie obsługują już kontrolek ActiveX z powodu słabych stron zabezpieczeń.
Uwaga
Jeśli kontrolka nie jest widoczna, należy wiedzieć, że niektóre przeglądarki wymagają korekt ustawień do uruchamiania kontrolek ActiveX. Zapoznaj się z dokumentacją przeglądarki dotyczącą włączania kontrolek ActiveX.
Na podstawie bieżących ustawień zabezpieczeń programu Internet Explorer może zostać wyświetlone okno dialogowe Alert zabezpieczeń. Stwierdza, że kontrola może nie być bezpieczna dla skryptu i może spowodować uszkodzenie. Jeśli na przykład masz kontrolkę, która wyświetlała plik, ale także Delete
metodę, która usunęła plik, byłoby to bezpieczne, jeśli po prostu wyświetliłeś go na stronie. Skrypt nie byłby jednak bezpieczny, ponieważ ktoś mógł wywołać metodę Delete
.
Ważne
Na potrzeby tego samouczka możesz zmienić ustawienia zabezpieczeń w programie Internet Explorer, aby uruchamiać kontrolki ActiveX, które nie są oznaczone jako bezpieczne. W Panel sterowania kliknij pozycję Właściwości internetowe i kliknij pozycję Zabezpieczenia, aby zmienić odpowiednie ustawienia. Po ukończeniu samouczka zmień ustawienia zabezpieczeń z powrotem na ich oryginalny stan.
Programowo można powiadamiać program Internet Explorer, że nie musi wyświetlać okna dialogowego Alert zabezpieczeń dla tej konkretnej kontrolki. Można to zrobić za pomocą interfejsu IObjectSafety
. AtL dostarcza implementację tego interfejsu w klasie IObjectSafetyImpl. Aby dodać interfejs do kontrolki, dodaj IObjectSafetyImpl
do listy dziedziczone klasy i dodaj wpis dla niego na mapie MODELU COM.
Aby dodać element IObjectSafetyImpl do kontrolki
Dodaj następujący wiersz na końcu listy odziedziczonych klas w pliku PolyCtl.h i dodaj przecinek do poprzedniego wiersza:
public IObjectSafetyImpl<CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>
Dodaj następujący wiersz do mapy COM w pliku PolyCtl.h:
COM_INTERFACE_ENTRY(IObjectSafety)
Kompilowanie i testowanie kontrolki
Skompiluj kontrolkę. Po zakończeniu kompilacji otwórz ponownie PolyCtl.htm w widoku przeglądarki. Tym razem strona sieci Web powinna być wyświetlana bezpośrednio bez okna dialogowego Alert bezpieczeństwa. Jeśli klikniesz wewnątrz wielokąta, liczba stron wzrośnie o jeden. Kliknij poza wielokąt, aby zmniejszyć liczbę boków.
Następne kroki
Ten krok kończy samouczek ATL. Aby uzyskać linki do dodatkowych informacji na temat atl, zobacz stronę początkową ATL.
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla