Pergunta

Se você criar um novo projeto ATL e adicionar um objeto COM simples para essa questão (nota: um objeto e não um controle) que usa o modelo de segmentação Apartamento, haverá uma bomba de mensagem em execução sob o capô? Quero criar uma janela oculta que é um membro da minha classe de objeto COM, mas não tenho certeza se nenhuma mensagem será realmente entregue a ele ou não. É este tratado nos bastidores ou que importa que tipo de aplicação é realmente criar o objeto COM?

Foi útil?

Solução

Não, um objeto COM ATL não implementar uma bomba de mensagem por padrão. Seu código deve usar explicitamente através de uma biblioteca Windowing normal ou implementação bomba de mensagem explícita.

Outras dicas

COM usa uma bomba de mensagem sob o capô para se comunicar com seu objeto COM quando necessário, se o seu objeto COM vive em um apartamento. É assim que métodos são chamados de forma segura em seu objeto (sendo serializada pela fila de mensagens) quando chamado por um objeto em outro apartamento (STA ou MTA).

Você não pode ficar na bomba mensagem - coloca COM ele junto para você somente quando sua necessidade. Você vai notar quando a depuração que você chamar métodos em seu objeto diretamente - você não está saltando através de uma bomba de mensagem. Você seria, é claro, se você estava reunindo vários objetos que vivem em diferentes apartamentos.

Se você precisar de uma janela, você pode criar um usando métodos padrão. ATL oferece aulas de janelas simples, como CWindow e CWindowImpl que pode tornar isso mais fácil.

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