Método IViewObjectEx::GetNaturalExtent (ocidl.h)
Fornece dicas de dimensionamento do contêiner para o objeto usar enquanto o usuário o redimensiona.
Sintaxe
HRESULT GetNaturalExtent(
[in] DWORD dwAspect,
[in] LONG lindex,
[in] DVTARGETDEVICE *ptd,
[in] HDC hicTargetDev,
[in] DVEXTENTINFO *pExtentInfo,
[out] LPSIZEL pSizel
);
Parâmetros
[in] dwAspect
O aspecto de desenho solicitado. Pode ser qualquer um dos valores a seguir, que são definidos pela enumeração DVASPECT .
[in] lindex
Indica a parte do objeto que é de interesse para a operação de desenho. Sua interpretação varia dependendo do valor no parâmetro dwAspect . Consulte a enumeração DVASPECT para obter mais informações.
[in] ptd
Ponteiro para a estrutura do dispositivo de destino que descreve o dispositivo para o qual o objeto deve ser renderizado. Se FOR NULL, a exibição deverá ser renderizada para o dispositivo de destino padrão (normalmente a exibição). Um valor diferente de NULL é interpretado em conjunto com hicTargetDev e hdcDraw. Por exemplo, se hdcDraw especificar uma impressora como o contexto do dispositivo, o parâmetro ptd apontará para uma estrutura que descreve esse dispositivo de impressora. Na verdade, os dados poderão ser impressos se hicTargetDev for um valor válido ou poderão ser exibidos no modo de visualização de impressão se hicTargetDev for NULL.
[in] hicTargetDev
Especifica o contexto de informações para o dispositivo de destino indicado pelo parâmetro ptd do qual o objeto pode extrair métricas do dispositivo e testar os recursos do dispositivo. Se ptd for NULL; o objeto deve ignorar o valor no parâmetro hicTargetDev .
[in] pExtentInfo
Ponteiro para a estrutura DVEXTENTINFO que especifica os dados de dimensionamento.
[out] pSizel
Ponteiro para dimensionar dados retornados pelo objeto . Os dados de dimensionamento retornados são definidos como -1 para qualquer dimensão que não foi ajustada. Ou seja, se cx for -1, a largura não foi ajustada, se cy for -1, a altura não foi ajustada. Se E_FAIL for retornado indicando que nenhum tamanho foi ajustado, pSizel poderá ser NULL.
Valor retornado
Esse método retorna S_OK em caso de êxito. Outros valores retornados possíveis incluem o seguinte.
Código de retorno | Descrição |
---|---|
|
Esse método não é implementado para o dwAspect especificado ou o tamanho não foi ajustado. |
|
Esse método não foi implementado. |
Comentários
Há duas abordagens gerais para dimensionar um controle. A primeira abordagem oferece a responsabilidade de controle pelo dimensionamento em si; a segunda abordagem dá ao contêiner a responsabilidade de dimensionar o controle. A primeira abordagem é chamada de dimensionamento automático. Há duas alternativas envolvidas na segunda abordagem: dimensionamento de conteúdo e dimensionamento integral.
O método IViewObjectEx::GetNaturalExtent dá suporte ao dimensionamento integral e ao conteúdo. No dimensionamento de conteúdo, o contêiner passa a estrutura DVEXTENTINFO para o objeto no qual o objeto retorna um tamanho sugerido. No dimensionamento integral, o contêiner passa um tamanho preferencial para o objeto em DVEXTENTINFO e o objeto realmente ajusta sua altura. O dimensionamento integral é usado quando o usuário usa elásticos em um novo tamanho no modo de design.
O dimensionamento automático normalmente ocorre com objetos como o controle Label, que redimensiona se a propriedade de dimensionamento automático foi habilitada e o texto associado foi alterado. O dimensionamento automático é tratado de forma diferente, dependendo do estado do objeto.
Se o objeto estiver inativo, ocorrerá o seguinte:
- O objeto chama IOleClientSite::RequestNewObjectLayout.
- O contêiner chama IOleObject::GetExtent e recupera as novas extensões.
- O contêiner chama IOleObject::SetExtent e ajusta as novas extensões.
- O objeto chama IOleInPlaceSite::OnPosRectChange para especificar que ele requer redimensionamento.
- O contêiner chama IOleInPlaceObject::SetObjectRects e especifica o novo tamanho.
Requisitos
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | ocidl.h |
Confira também
IOleClientSite::RequestNewObjectLayout
IOleInPlaceObject::SetObjectRects