다음을 통해 공유


ATL DHTML 컨트롤 수정

ATL 컨트롤 마법사는 컨트롤을 빌드하고 실행할 수 있도록 시작 코드를 제공하므로 프로젝트 파일에서 메서드를 작성하는 방법과 DHTML이 디스패치 메서드를 사용하여 컨트롤의 C++ 코드를 호출하는 방법을 확인할 수 있습니다. 인터페이스에 모든 디스패치 메서드를 추가할 수 있습니다. 그런 다음 HTML 리소스에서 메서드를 호출할 수 있습니다.

ATL DHTML 컨트롤을 수정하려면

  1. 클래스 뷰에서 컨트롤 프로젝트를 확장합니다.

    "UI"로 끝나는 인터페이스에는 하나의 메서드가 OnClick있습니다. "UI"로 끝나지 않는 인터페이스에는 메서드가 없습니다.

  2. "UI"로 끝나지 않는 인터페이스에 호출 MethodInvoked 된 메서드를 추가합니다.

    이 메서드는 컨트롤과 상호 작용하기 위해 DHTML에서 사용하는 인터페이스가 아니라 컨테이너 상호 작용을 위해 컨트롤 컨테이너에 사용되는 인터페이스에 추가됩니다. 컨테이너만 이 메서드를 호출할 수 있습니다.

  3. .cpp 파일에서 스텁 아웃 메서드를 찾아 메시지 상자를 표시하는 코드를 추가합니다. 예를 들면 다음과 같습니다.

    ::MessageBox(NULL, _T("I'm invoked"), _T("Your Container Message"), MB_OK);
    
  4. 이번에는 호출된 HelloHTML다른 메서드를 추가하여 "UI"로 끝나는 인터페이스에 추가합니다. .cpp 파일에서 스텁 아웃 HelloHTML 메서드를 찾아 메시지 상자를 표시하는 코드를 추가합니다. 예를 들면 다음과 같습니다.

    ::MessageBox(NULL, _T("Here's your message"), _T("HelloHTML"), MB_OK);
    
  5. "UI"로 끝나지 않는 인터페이스에 세 번째 메서드GoToURL를 추가합니다. 다음과 같이 IWebBrowser2::Navigate를 호출하여 이 메서드를 구현합니다.

    m_spBrowser->Navigate(CComBSTR(L"www.microsoft.com"), NULL, NULL, NULL, NULL);
    

    ATL은 IWebBrowser2 .h 파일에서 해당 인터페이스에 대한 포인터를 제공하므로 메서드를 사용할 수 있습니다.

다음으로, 만든 메서드를 호출하도록 HTML 리소스를 수정합니다. 이러한 메서드를 호출하기 위한 3개의 단추를 추가합니다.

HTML 리소스를 수정하려면

  1. 솔루션 탐색기 .htm 파일을 두 번 클릭하여 HTML 리소스를 표시합니다.

    HTML, 특히 외부 Windows 디스패치 메서드에 대한 호출을 검사합니다. HTML은 프로젝트의 OnClick 메서드를 호출하고 매개 변수는 컨트롤의 본문(theBody)과 할당할 색(""red)을 나타냅니다. 메서드 호출 다음 텍스트는 단추에 표시되는 레이블입니다.

  2. 다른 OnClick 메서드를 추가하고 색만 변경합니다. 예시:

    <br>
    <br>
    <BUTTON onclick='window.external.OnClick(theBody, "white");'>Refresh</BUTTON>
    

    이 메서드는 사용자가 클릭할 수 있는 새로 고침이라는 레이블이 지정된 단추를 만들어 컨트롤을 원래 흰색 배경으로 반환합니다.

  3. 만든 메서드에 호출을 HelloHTML 추가합니다. 예시:

    <br>
    <br>
    <BUTTON onclick='window.external.HelloHTML();'>HelloHTML</BUTTON>
    

    이 메서드는 사용자가 클릭하여 메시지 상자를 표시 HelloHTML 할 수 있는 HelloHTML 레이블이 지정된 단추를 만듭니다.

이제 수정된 DHTML 컨트롤을 빌드하고 테스트할 수 있습니다.

참고 항목

DHTML 컨트롤 지원