2010-04-06 2 views
0

어떻게 든 할 수있는 방법은 ATL ActiveX (즉, 확장)에 WTL destop 응용 프로그램을 포함할까요?ATL ActiveX 컨트롤에 WTL 응용 프로그램을 포함

내가 달성하고자하는 것은 Office 파일 뷰어로 ActiveX 컨트롤을 만드는 것입니다. 기본으로 나는 문서를 표시하기 위해 OOo v3 API를 사용하는 데스크탑 WTL 애플리케이션 (몇 시간 전 작성)이 있습니다.

  • 필자는 ActiveX 프로젝트를 만들고 필요한 libs와 링크를 연결했습니다.
  • WTL 및 OO API 메소드를 호출 할 수 있습니다.
  • 호스트 응용 프로그램의 요구 사항을 충족시키기 위해 몇 가지 속성과 메서드가 추가되었습니다.
  • 내에서 ActiveX가 제대로 여기 내 행운 즉, 호스트 응용 프로그램

에 표시되고 (과 지식을?)했다.

내 컨트롤에는 m_hwnd 속성이 있지만 항상 0으로 설정됩니다. 나는 조금 봤과 내가

this->m_spInPlaceSite->GetWindow() 

와 부모 HWND를 얻을 수 있다는 것을 발견하지만 중 하나를 작동하지 않습니다했습니다. 때마다 창 런타임을 만들 때마다 부모가 == null과 함께 IsWindow() 메서드 (부모에서 호출 된)에서 끝납니다

만들고 표시하려면 OOo :: DocWindow 부모 창 HWND가 필요합니다.

내가 어떻게 든 액티브 즉 확장에 WTL 윈도우 기반 응용 프로그램을 포함 할 수 있습니다 : 여기

그리고

질문을 간다?
전체 OOo API 래퍼를 다시 작성하지 않고도 가능합니까?

답변

1

예, 가능합니다. VS 마법사

단계 :

  1. ATL 프로젝트
  2. 를 만듭니다 (예 : 버튼) 일부 컨트롤을 기반으로 ATL 컨트롤을 추가합니다. 이 경우 일부 핸들러가있는 메시지 맵을 갖게됩니다.

그런 다음 CContainedWindow 멤버를 자신의 창으로 바꾸십시오. 그게 전부입니다.

ATL Samples page 나는 확인하지 않았지만 도움이 되길 바랍니다.

+0

아직 컴파일 중 메시지 맵을 변환하는 중 일부 오류가 표시되지만 검색하려면 khow가 필요합니다. 감사! – beermann

관련 문제