Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um controle suporta o posicionamento e a exibição dentro de seu contêiner por meio da tecnologia de documento composto e da tecnologia OLE de arrastar e soltar que envolve o controle e seu contêiner. O comando deve poder desenhar-se a si próprio enquanto o contentor gere a posição do comando e o seu tamanho.
Os controles adicionam às funções básicas fornecidas por documentos OLE. Um controle chama o de seu cliente IOleClientSite::RequestNewObjectLayout método para informar seu contêiner que ele deseja alterar seu tamanho. O cliente chama o do controle IOleObject::GetExtent para obter o novo tamanho e chama IOleInPlaceObject::SetObjectRects para definir o controle para seu novo tamanho.
Os controles que suportam apenas IPersistStream ou IPersistStreamInit não suportam cache por meio de IOleCache2 porque o cache requer suporte para IPersistStorage. No entanto, esses controles devem fornecer uma maneira para o cliente renderizar o controle por meio de IDataObject::GetData para que o cliente possa, opcionalmente, criar e gerenciar seu próprio cache dos dados de apresentação para o controle.
Os controles usam o tipo HIMETRIC para suas coordenadas. No entanto, diferentes contêineres podem usar diferentes sistemas de coordenadas. O contêiner deseja receber coordenadas em seu próprio sistema, mas o controle não sabe necessariamente quais coordenadas seu contêiner está usando. Para se comunicar com êxito, o controle precisa de uma maneira de converter valores para as coordenadas do contêiner. O contêiner fornece um objeto de site com o métodoIOleControlSite::TransformCoords. O controle chama esse método no site cliente do contêiner primeiro para converter suas coordenadas nas coordenadas apropriadas para o contêiner. Em seguida, ele pode passar as coordenadas convertidas para o contêiner.
Os controles podem chamar IOleControlSite::LockInPlaceActive no objeto de site do contêiner para impedir que o contêiner tente rebaixar o controle para fora do estado ativo in-loco. Rebaixar o controle dessa maneira faz com que o controle seja desativado e sua janela destruída, portanto, se o controle deve manter sua janela por uma duração conhecida, ele pode chamar LockInPlaceActive para garantir seu estado.
Tópicos relacionados