Metodo IDataObject::GetCanonicalFormatEtc (objidl.h)
Fornisce una struttura FORMATETC potenzialmente diversa ma logicamente equivalente. Questo metodo consente di determinare se due strutture FORMATETC diverse restituiscono gli stessi dati, eliminando la necessità di eseguire il rendering duplicato.
Sintassi
HRESULT GetCanonicalFormatEtc(
[in] FORMATETC *pformatectIn,
[out] FORMATETC *pformatetcOut
);
Parametri
[in] pformatectIn
Puntatore alla struttura FORMATETC che definisce il formato, il supporto e il dispositivo di destinazione che il chiamante desidera utilizzare per recuperare i dati in una chiamata successiva, ad esempio IDataObject::GetData. Il membro tymed non è significativo in questo caso e deve essere ignorato.
[out] pformatetcOut
Puntatore a una struttura FORMATETC che contiene le informazioni più generali possibili per un rendering specifico, rendendolo in modo canonico equivalente a pformatetcIn. Il chiamante deve allocare questa struttura e il metodo GetCanonicalFormatEtc deve compilare i dati. Per recuperare i dati in una chiamata successiva, ad esempio IDataObject::GetData, il chiamante usa il valore specificato di pformatetcOut, a meno che il valore specificato non sia NULL. Questo valore è NULL se il metodo restituisce DATA_S_SAMEFORMATETC. Il membro tymed non è significativo in questo caso e deve essere ignorato.
Valore restituito
Questo metodo può restituire i valori seguenti.
Codice restituito | Descrizione |
---|---|
|
La struttura FORMATETC restituita è diversa da quella passata. |
|
Le strutture FORMATETC sono uguali e NULL viene restituito in pformatetcOut. |
|
Il valore per lindex non è valido; attualmente è supportato solo -1. |
|
Il valore per pformatetc non è valido. |
|
L'applicazione oggetto non è in esecuzione. |
|
Si è verificato un errore imprevisto. |
|
Il parametro dwDirection non è valido. |
|
Memoria insufficiente disponibile per questa operazione. |
Commenti
Se un oggetto dati può fornire esattamente gli stessi dati per più di una struttura FORMATETC richiesta, GetCanonicalFormatEtc può fornire un oggetto FORMATETC "canonico" o standard che fornisce lo stesso rendering di un set di strutture FORMATETC più complesse. Ad esempio, è comune che i dati restituiti non siano sensibili al dispositivo di destinazione specificato in uno qualsiasi di un set di strutture FORMATETC altrimenti simili.
Note ai chiamanti
Una chiamata a questo metodo può determinare se due chiamate a IDataObject::GetData su un oggetto dati, specificando due strutture FORMATETC diverse, produrrebbero effettivamente gli stessi rendering, eliminando così la necessità della seconda chiamata e migliorando le prestazioni. Se la chiamata a GetCanonicalFormatEtc restituisce un formato canonico scritto nel parametro pformatetcOut , il chiamante usa tale struttura in una chiamata successiva a IDataObject::GetData.Note per gli implementatori
Concettualmente, è possibile considerare le strutture FORMATETC in gruppi definiti da un FORMATETC canonico che fornisce gli stessi risultati di ognuno dei membri del gruppo. Nella costruzione del formato canonico FORMATETC, è necessario assicurarsi che contenga le informazioni più generali possibili che producono comunque un rendering specifico.Per gli oggetti dati che non forniscono mai rendering specifici del dispositivo, l'implementazione più semplice di questo metodo consiste nel copiare l'input FORMATETC nell'output FORMATETC, archiviare un valore NULL nel membro ptd dell'output FORMATETC e restituire DATA_S_SAMEFORMATETC.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | objidl.h |