Pergunta

Existe uma maneira de incorporar de alguma forma um aplicativo WTL Destop no ATL ActiveX (isto é, extensão)?

O que estou tentando alcançar é criar um controle ActiveX com o visualizador de arquivos do Office. Como base, tenho um aplicativo WTL de desktop (escrito há algum tempo), que usa a API OOO V3 para exibir documentos.

  • Eu criei um projeto ActiveX, vinculei os LIBs necessários e inclui.
  • Eu posso ligar para os métodos WTL e OO API.
  • Algumas propriedades e métodos foram adicionados para atender aos requisitos do aplicativo host.
  • Meu ActiveX é mostrado corretamente no aplicativo IE e host

E aqui minha sorte (e conhecimento?) Terminou.

Meu controle possui a propriedade M_HWND, mas está sempre definida como 0; Eu pesquisei um pouco no Google e descobri que posso obter o pai ou mãe com

this->m_spInPlaceSite->GetWindow()

Mas também não está funcionando. Toda vez que eu quero criar um tempo de execução da janela termina no método ISWindow () (chamado de ATL lib) com pai == null

Para criar e mostrar ooo :: docwindow, preciso de HWND da janela dos pais.

E aqui vai a pergunta:

De alguma forma, posso incorporar um aplicativo baseado em janela WTL na extensão ActiveX IE?
É possível sem reescrever o wrapper de API OOO inteiro?

Foi útil?

Solução

Sim você pode.

Etapas com o assistente VS:

  1. Criar projeto ATL
  2. Adicione o controle ATL, com base em algum controle (botão, por exemplo). Nesse caso, você terá um mapa de mensagens com alguns manipuladores.

Em seguida, substitua o membro do CcontainedWindow em sua própria janela e isso é tudo.

Página de amostras ATL, Não verifiquei, mas espero que ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top