본문 바로가기

프로그래밍

Windows SDK 프로젝트에서 ActiveX Control 사용하기

현재 개발중인 프로그램은 MFC 기반이 아니기 때문에 ActiveX Control을 사용하는 방법에 대한 기술자료 검색이 좀 어려웠다.
MFC로 되어있는 예제나 참고자료는 참 많이 널려있다.
그러던중 발견한것..


아주 심플하게 되어있어 사용하기 용이하다.

Screenshot - d.jpg

해당 사이트에 게시된 프로젝트는 VC2005로 만들어져있어 하위버전에서는 프로젝트 로드가 되지 않는다.

그냥 빈프로젝트를 생성하고 ax.cpp 와 ax.h 를 포함시키고

메인함수에서 아래의 함수를 호출해서 초기화하고 

    OleInitialize(0);
    if (!AXRegister())
        return 0;
    ...


리소스 스크립트에 다이얼로그 하위에 사용하고자하는 ActiveX의 클래스 아이디를 확인하여 삽입한다.

{
    CONTROL "{8856F961-340A-11D0-A96B-00C04FD705A2}", 801, "AX", 
                WS_CHILD | WS_VISIBLE, 0, 0, 500, 400
}

그다음에 실행시 SendMessage를 이용하여 해당 컨트롤의 포인터를 얻어올수 있다.

IWebBrowser2* wb = 0;
SendMessage(hX,AX_QUERYINTERFACE,(WPARAM)&IID_IWebBrowser2,(LPARAM)&wb);
if (wb)
{
    wb->Navigate(L"http://www.codeproject.com",0,0,0,0);
    wb->Release();
}


대략 이런 구조...

잘 동작한다.