웹 페이지에 컨트롤 배치(ATL 자습서, 7부)
이제 컨트롤이 완료되었습니다. 실제 상황에서 컨트롤이 작동하는 것을 보려면 웹 페이지에 배치합니다. 컨트롤을 정의할 때 컨트롤이 포함된 HTML 파일이 만들어졌습니다. 솔루션 탐색기 PolyCtl.htm 파일을 열고 웹 페이지에서 컨트롤을 볼 수 있습니다.
이 단계에서는 컨트롤에 기능을 추가하고 이벤트에 응답하도록 웹 페이지를 스크립티합니다. 또한 Internet Explorer에서 컨트롤이 스크립팅에 안전하다는 것을 알 수 있도록 컨트롤을 수정합니다.
새 기능 추가
컨트롤 기능을 추가하려면
PolyCtl.cpp를 열고 다음 코드를 바꿉다.
if (PtInRegion(hRgn, xPos, yPos))
Fire_ClickIn(xPos, yPos);
else
Fire_ClickOut(xPos, yPos);
다음과 같이 바꿉니다.
short temp = m_nSides;
if (PtInRegion(hRgn, xPos, yPos))
{
Fire_ClickIn(xPos, yPos);
put_Sides(++temp);
}
else
{
Fire_ClickOut(xPos, yPos);
put_Sides(--temp);
}
이제 셰이프가 클릭 위치에 따라 측면을 추가하거나 제거합니다.
웹 페이지 스크립팅
컨트롤은 아직 아무 작업도 수행하지 않으므로 보내는 이벤트에 응답하도록 웹 페이지를 변경합니다.
웹 페이지를 스크립깅하려면
PolyCtl.htm을 열고 HTML 보기를 선택합니다. HTML 코드에 다음 줄을 추가합니다. 이후에 추가
</OBJECT>
되어야 합니다.</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>
HTM 파일을 저장합니다.
컨트롤에서 Sides 속성을 가져오는 일부 VBScript 코드를 추가했습니다. 컨트롤 내부를 클릭하면 측면 수가 하나씩 증가합니다. 컨트롤 바깥쪽을 클릭하면 측면 수가 하나씩 줄어듭니다.
컨트롤이 스크립팅에 금고 표시
Internet Explorer에서만 컨트롤을 사용하여 웹 페이지를 볼 수 있습니다. 다른 브라우저는 보안 약점으로 인해 ActiveX 컨트롤을 더 이상 지원하지 않습니다.
참고 항목
컨트롤이 표시되지 않으면 일부 브라우저에서 ActiveX 컨트롤을 실행하려면 설정을 조정해야 합니다. ActiveX 컨트롤을 사용하도록 설정하는 방법에 대한 브라우저 설명서를 참조하세요.
현재 Internet Explorer 보안 설정에 따라 보안 경고 대화 상자가 표시될 수 있습니다. 컨트롤이 스크립트에 안전하지 않을 수 있으며 잠재적으로 손상을 줄 수 있다고 명시되어 있습니다. 예를 들어 파일을 표시하는 컨트롤이 있지만 파일을 삭제하는 메서드도 있는 Delete
경우 페이지에서 방금 본 경우 안전합니다. 그러나 누군가가 메서드를 호출할 수 있기 때문에 스크립트하는 Delete
것은 안전하지 않습니다.
Important
이 자습서에서는 Internet Explorer에서 보안 설정을 변경하여 안전한 것으로 표시되지 않은 ActiveX 컨트롤을 실행할 수 있습니다. 제어판 인터넷 속성을 클릭하고 보안을 클릭하여 적절한 설정을 변경합니다. 자습서를 완료하면 보안 설정을 원래 상태로 다시 변경합니다.
이 특정 컨트롤에 대한 보안 경고 대화 상자를 표시할 필요가 없다는 것을 Internet Explorer에 프로그래밍 방식으로 경고할 수 있습니다. 인터페이스를 사용하여 IObjectSafety
수행할 수 있습니다. ATL은 IObject금고tyImpl 클래스에서 이 인터페이스의 구현을 제공합니다. 컨트롤에 인터페이스를 추가하려면 상속된 클래스 목록에 추가하고 IObjectSafetyImpl
COM 맵에 해당 항목을 추가합니다.
IObject금고tyImpl을 컨트롤에 추가하려면
PolyCtl.h에서 상속된 클래스 목록의 끝에 다음 줄을 추가하고 이전 줄에 쉼표를 추가합니다.
public IObjectSafetyImpl<CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>
PolyCtl.h의 COM 맵에 다음 줄을 추가합니다.
COM_INTERFACE_ENTRY(IObjectSafety)
컨트롤 빌드 및 테스트
컨트롤을 빌드합니다. 빌드가 완료되면 브라우저 보기에서 PolyCtl.htm을 다시 엽니다. 이번에는 금고0 경고 대화 상자 없이 웹 페이지를 직접 표시해야 합니다. 다각형 내부를 클릭하면 측면 수가 1씩 증가합니다. 다각형 바깥쪽을 클릭하여 측면 수를 줄입니다.
다음 단계
이 단계에서는 ATL 자습서를 완료합니다. ATL에 대한 자세한 내용은 ATL 시작 페이지를 참조 하세요.