Condividi tramite


Classe COleDataSource

Funge da cache in cui un'applicazione inserisce i dati che fornirà durante le operazioni di trasferimento dei dati, ad esempio gli Appunti o le operazioni di trascinamento e rilascio.

Sintassi

class COleDataSource : public CCmdTarget

Membri

Costruttori pubblici

Nome Descrizione
COleDataSource::COleDataSource Costruisce un oggetto COleDataSource.

Metodi pubblici

Nome Descrizione
COleDataSource::CacheData Offre dati in un formato specificato usando una STGMEDIUM struttura.
COleDataSource::CacheGlobalData Offre dati in un formato specificato usando un HGLOBAL.
COleDataSource::D elayRenderData Offre dati in un formato specificato usando il rendering ritardato.
COleDataSource::D elayRenderFileData Offre dati in un formato specificato in un CFile puntatore.
COleDataSource::D elaySetData Chiamato per ogni formato supportato in OnSetData.
COleDataSource::D oDragDrop Esegue operazioni di trascinamento della selezione con un'origine dati.
COleDataSource::Empty Svuota l'oggetto COleDataSource dei dati.
COleDataSource::FlushClipboard Esegue il rendering di tutti i dati negli Appunti.
COleDataSource::GetClipboardOwner Verifica che i dati inseriti negli Appunti siano ancora presenti.
COleDataSource::OnRenderData Recupera i dati come parte del rendering ritardato.
COleDataSource::OnRenderFileData Recupera i dati in un CFile oggetto come parte del rendering ritardato.
COleDataSource::OnRenderGlobalData Recupera i dati in un oggetto HGLOBAL come parte del rendering ritardato.
COleDataSource::OnSetData Chiamato per sostituire i dati nell'oggetto COleDataSource .
COleDataSource::SetClipboard Inserisce un COleDataSource oggetto negli Appunti.

Osservazioni:

È possibile creare direttamente origini dati OLE. In alternativa, le classi COleClientItem e COleServerItem creano origini dati OLE in risposta alle relative CopyToClipboard funzioni membro e DoDragDrop . Per una breve descrizione, vedere COleServerItem::CopyToClipboard . Eseguire l'override della OnGetClipboardData funzione membro della classe dell'elemento client o dell'elemento del server per aggiungere altri formati degli Appunti ai dati nell'origine dati OLE creata per la CopyToClipboard funzione membro o DoDragDrop .

Ogni volta che si desidera preparare i dati per un trasferimento, è necessario creare un oggetto di questa classe e compilarli con i dati usando il metodo più appropriato per i dati. La modalità di inserimento in un'origine dati è direttamente influenzata dal fatto che i dati vengano forniti immediatamente (rendering immediato) o su richiesta (rendering ritardato). Per ogni formato degli Appunti in cui si forniscono i dati passando il formato Degli Appunti da usare (e una struttura FORMATETC facoltativa), chiamare DelayRenderData.

Per altre informazioni sulle origini dati e sul trasferimento dei dati, vedere l'articolo Oggetti dati e origini dati (OLE).For more information about data sources and data transfer, see the article Data Objects and Data Sources (OLE). Inoltre, l'articolo Argomenti degli Appunti descrive il meccanismo degli Appunti OLE.

Gerarchia di ereditarietà

CObject

CCmdTarget

COleDataSource

Requisiti

Intestazione: afxole.h

COleDataSource::CacheData

Chiamare questa funzione per specificare un formato in cui i dati vengono offerti durante le operazioni di trasferimento dei dati.

void CacheData(
    CLIPFORMAT cfFormat,
    LPSTGMEDIUM lpStgMedium,
    LPFORMATETC lpFormatEtc = NULL);

Parametri

cfFormat
Formato degli Appunti in cui devono essere offerti i dati. Questo parametro può essere uno dei formati predefiniti degli Appunti o il valore restituito dalla funzione nativa Windows RegisterClipboardFormat .

lpStgMedium
Punta a una struttura STGMEDIUM contenente i dati nel formato specificato.

lpFormatEtc
Punta a una struttura FORMATETC che descrive il formato in cui devono essere offerti i dati. Specificare un valore per questo parametro se si desidera specificare informazioni di formato aggiuntive oltre il formato degli Appunti specificato da cfFormat. Se è NULL, i valori predefiniti vengono usati per gli altri campi della FORMATETC struttura.

Osservazioni:

È necessario fornire i dati, perché questa funzione la fornisce usando il rendering immediato. I dati vengono memorizzati nella cache fino a quando non sono necessari.

Fornire i dati usando una struttura STGMEDIUM . È anche possibile usare la CacheGlobalData funzione membro se la quantità di dati che si sta fornendo è sufficientemente piccola da essere trasferita in modo efficiente usando un HGLOBAL.

Dopo la chiamata al CacheData ptd membro di lpFormatEtc e il contenuto di lpStgMedium sono di proprietà dell'oggetto dati, non dal chiamante.

Per usare il rendering ritardato, chiamare la funzione membro DelayRenderData o DelayRenderFileData . Per altre informazioni sul rendering ritardato come gestito da MFC, vedere l'articolo Oggetti dati e origini dati: Manipolazione.

Per altre informazioni, vedere le strutture STGMEDIUM e FORMATETC in Windows SDK.

Per altre informazioni, vedere RegisterClipboardFormat in Windows SDK.

COleDataSource::CacheGlobalData

Chiamare questa funzione per specificare un formato in cui i dati vengono offerti durante le operazioni di trasferimento dei dati.

void CacheGlobalData(
    CLIPFORMAT cfFormat,
    HGLOBAL hGlobal,
    LPFORMATETC lpFormatEtc = NULL);

Parametri

cfFormat
Formato degli Appunti in cui devono essere offerti i dati. Questo parametro può essere uno dei formati predefiniti degli Appunti o il valore restituito dalla funzione nativa Windows RegisterClipboardFormat .

hGlobal
Handle per il blocco di memoria globale contenente i dati nel formato specificato.

lpFormatEtc
Punta a una struttura FORMATETC che descrive il formato in cui devono essere offerti i dati. Specificare un valore per questo parametro se si desidera specificare informazioni di formato aggiuntive oltre il formato degli Appunti specificato da cfFormat. Se è NULL, i valori predefiniti vengono usati per gli altri campi della FORMATETC struttura.

Osservazioni:

Questa funzione fornisce i dati usando il rendering immediato, pertanto è necessario fornire i dati quando si chiama la funzione; i dati vengono memorizzati nella cache fino a quando non sono necessari. Usare la CacheData funzione membro se si specifica una grande quantità di dati o se è necessario un supporto di archiviazione strutturato.

Per usare il rendering ritardato, chiamare la funzione membro DelayRenderData o DelayRenderFileData . Per altre informazioni sul rendering ritardato come gestito da MFC, vedere l'articolo Oggetti dati e origini dati: Manipolazione.

Per altre informazioni, vedere la struttura FORMATETC in Windows SDK.

Per altre informazioni, vedere RegisterClipboardFormat in Windows SDK.

COleDataSource::COleDataSource

Costruisce un oggetto COleDataSource.

COleDataSource();

COleDataSource::D elayRenderData

Chiamare questa funzione per specificare un formato in cui i dati vengono offerti durante le operazioni di trasferimento dei dati.

void DelayRenderData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

Parametri

cfFormat
Formato degli Appunti in cui devono essere offerti i dati. Questo parametro può essere uno dei formati predefiniti degli Appunti o il valore restituito dalla funzione nativa Windows RegisterClipboardFormat .

lpFormatEtc
Punta a una struttura FORMATETC che descrive il formato in cui devono essere offerti i dati. Specificare un valore per questo parametro se si desidera specificare informazioni di formato aggiuntive oltre il formato degli Appunti specificato da cfFormat. Se è NULL, i valori predefiniti vengono usati per gli altri campi della FORMATETC struttura.

Osservazioni:

Questa funzione fornisce i dati usando il rendering ritardato, quindi i dati non vengono forniti immediatamente. La funzione membro OnRenderData o OnRenderGlobalData viene chiamata per richiedere i dati.

Usare questa funzione se non si intende fornire i dati tramite un CFile oggetto . Se si intende fornire i dati tramite un CFile oggetto , chiamare la funzione membro DelayRenderFileData . Per altre informazioni sul rendering ritardato come gestito da MFC, vedere l'articolo Oggetti dati e origini dati: Manipolazione.

Per usare il rendering immediato, chiamare la funzione membro CacheData o CacheGlobalData .

Per altre informazioni, vedere la struttura FORMATETC in Windows SDK.

Per altre informazioni, vedere RegisterClipboardFormat in Windows SDK.

COleDataSource::D elayRenderFileData

Chiamare questa funzione per specificare un formato in cui i dati vengono offerti durante le operazioni di trasferimento dei dati.

void DelayRenderFileData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

Parametri

cfFormat
Formato degli Appunti in cui devono essere offerti i dati. Questo parametro può essere uno dei formati predefiniti degli Appunti o il valore restituito dalla funzione nativa Windows RegisterClipboardFormat .

lpFormatEtc
Punta a una struttura FORMATETC che descrive il formato in cui devono essere offerti i dati. Specificare un valore per questo parametro se si desidera specificare informazioni di formato aggiuntive oltre il formato degli Appunti specificato da cfFormat. Se è NULL, i valori predefiniti vengono usati per gli altri campi della FORMATETC struttura.

Osservazioni:

Questa funzione fornisce i dati usando il rendering ritardato, quindi i dati non vengono forniti immediatamente. La funzione membro OnRenderFileData viene chiamata per richiedere i dati.

Usare questa funzione se si intende usare un CFile oggetto per fornire i dati. Se non si intende usare un CFile oggetto , chiamare la funzione membro DelayRenderData . Per altre informazioni sul rendering ritardato come gestito da MFC, vedere l'articolo Oggetti dati e origini dati: Manipolazione.

Per usare il rendering immediato, chiamare la funzione membro CacheData o CacheGlobalData .

Per altre informazioni, vedere la struttura FORMATETC in Windows SDK.

Per altre informazioni, vedere RegisterClipboardFormat in Windows SDK.

COleDataSource::D elaySetData

Chiamare questa funzione per supportare la modifica del contenuto dell'origine dati.

void DelaySetData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

Parametri

cfFormat
Formato degli Appunti in cui inserire i dati. Questo parametro può essere uno dei formati predefiniti degli Appunti o il valore restituito dalla funzione nativa Windows RegisterClipboardFormat .

lpFormatEtc
Punta a una struttura FORMATETC che descrive il formato in cui devono essere sostituiti i dati. Specificare un valore per questo parametro se si desidera specificare informazioni di formato aggiuntive oltre il formato degli Appunti specificato da cfFormat. Se è NULL, i valori predefiniti vengono usati per gli altri campi della FORMATETC struttura.

Osservazioni:

In questo caso, OnSetData verrà chiamato dal framework. Viene usato solo quando il framework restituisce l'origine dati da COleServerItem::GetDataSource. Se DelaySetData non viene chiamato, la OnSetData funzione non verrà mai chiamata. DelaySetData deve essere chiamato per ogni Clipboard o FORMATETC formato supportato.

Per altre informazioni, vedere la struttura FORMATETC in Windows SDK.

Per altre informazioni, vedere RegisterClipboardFormat in Windows SDK.

COleDataSource::D oDragDrop

Chiamare la DoDragDrop funzione membro per eseguire un'operazione di trascinamento della selezione per questa origine dati, in genere in un gestore CWnd::OnLButtonDown .

DROPEFFECT DoDragDrop(
    DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE|DROPEFFECT_LINK,
    LPCRECT lpRectStartDrag = NULL,
    COleDropSource* pDropSource = NULL);

Parametri

dwEffects
Operazioni di trascinamento della selezione consentite in questa origine dati. Può essere uno o più degli elementi seguenti:

  • DROPEFFECT_COPY È possibile eseguire un'operazione di copia.

  • DROPEFFECT_MOVE È possibile eseguire un'operazione di spostamento.

  • DROPEFFECT_LINK è possibile stabilire un collegamento dai dati eliminati ai dati originali.

  • DROPEFFECT_SCROLL Indica che potrebbe verificarsi un'operazione di trascinamento dello scorrimento.

lpRectStartDrag
Puntatore al rettangolo che definisce dove inizia effettivamente il trascinamento. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.

pDropSource
Punta a un'origine di rilascio. Se NULL verrà usata un'implementazione predefinita di COleDropSource .

Valore restituito

Effetto di rilascio generato dall'operazione di trascinamento della selezione; in caso contrario, DROPEFFECT_NONE se l'operazione non inizia mai perché l'utente ha rilasciato il pulsante del mouse prima di lasciare il rettangolo fornito.

Osservazioni:

L'operazione di trascinamento della selezione non viene avviata immediatamente. Attende fino a quando il cursore del mouse non lascia il rettangolo specificato da lpRectStartDrag o fino a quando non viene passato un numero specificato di millisecondi. Se lpRectStartDrag è NULL, la dimensione del rettangolo è un pixel.

Il tempo di ritardo viene specificato da un'impostazione della chiave del Registro di sistema. È possibile modificare il tempo di ritardo chiamando CWinApp::WriteProfileString o CWinApp::WriteProfileInt. Se non si specifica il tempo di ritardo, viene utilizzato un valore predefinito di 200 millisecondi. Il tempo di ritardo del trascinamento viene archiviato nel modo seguente:

  • Il tempo di ritardo del trascinamento di Windows NT viene archiviato in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\IniFileMapping\win.ini\Windows\DragDelay.

  • Il tempo di ritardo del trascinamento di Windows 3.x viene archiviato in WIN. File INI, nella sezione [Windows}.

  • Il tempo di ritardo trascinamento di Windows 95/98 viene archiviato in una versione memorizzata nella cache di WIN. INI.

Per altre informazioni sul modo in cui le informazioni sul ritardo di trascinamento vengono archiviate nel Registro di sistema o in . File INI, vedere WriteProfileString in Windows SDK.

Per altre informazioni, vedere l'articolo Trascinare e rilasciare OLE.

COleDataSource::Empty

Chiamare questa funzione per svuotare l'oggetto COleDataSource dei dati.

void Empty();

Osservazioni:

Sia i formati di rendering memorizzati nella cache che i formati di rendering ritardati vengono svuotati in modo che possano essere riutilizzati.

Per altre informazioni, vedere ReleaseStgMedium in Windows SDK.

COleDataSource::FlushClipboard

Esegue il rendering dei dati presenti negli Appunti e quindi consente di incollare i dati dagli Appunti dopo l'arresto dell'applicazione.

static void PASCAL FlushClipboard();

Osservazioni:

Usare SetClipboard per inserire i dati negli Appunti.

COleDataSource::GetClipboardOwner

Determina se i dati negli Appunti sono stati modificati dopo l'ultima chiamata a SetClipboard e, in tal caso, identifica il proprietario corrente.

static COleDataSource* PASCAL GetClipboardOwner();

Valore restituito

L'origine dati attualmente negli Appunti o NULL se non è presente alcun elemento negli Appunti o se gli Appunti non sono di proprietà dell'applicazione chiamante.

COleDataSource::OnRenderData

Chiamato dal framework per recuperare i dati nel formato specificato.

virtual BOOL OnRenderData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium);

Parametri

lpFormatEtc
Punta alla struttura FORMATETC specificando il formato in cui vengono richieste le informazioni.

lpStgMedium
Punta a una struttura STGMEDIUM in cui devono essere restituiti i dati.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Il formato specificato viene inserito in precedenza nell'oggetto COleDataSource utilizzando la funzione membro DelayRenderData o DelayRenderFileData per il rendering ritardato. L'implementazione predefinita di questa funzione chiamerà OnRenderFileData o OnRenderGlobalData se il supporto di archiviazione fornito è rispettivamente un file o una memoria. Se nessuno di questi formati viene fornito, l'implementazione predefinita restituirà 0 e non eseguirà alcuna operazione. Per altre informazioni sul rendering ritardato come gestito da MFC, vedere l'articolo Oggetti dati e origini dati: Manipolazione.

Se lpStgMedium-tymed> è TYMED_NULL, deve STGMEDIUM essere allocato e compilato come specificato da lpFormatEtc-tymed.> Se non è TYMED_NULL, deve STGMEDIUM essere compilato con i dati.

Si tratta di un override avanzato. Eseguire l'override di questa funzione per fornire i dati nel formato e nel supporto richiesti. A seconda dei dati, è possibile eseguire l'override di una delle altre versioni di questa funzione. Se i dati sono di dimensioni ridotte e fisse, eseguire l'override di OnRenderGlobalData. Se i dati si trovano in un file o sono di dimensioni variabili, eseguire l'override OnRenderFileDatadi .

Per altre informazioni, vedere le strutture STGMEDIUM e FORMATETC , il tipo di enumerazione TYMED e IDataObject::GetData in Windows SDK.

COleDataSource::OnRenderFileData

Chiamato dal framework per recuperare i dati nel formato specificato quando il supporto di archiviazione specificato è un file.

virtual BOOL OnRenderFileData(
    LPFORMATETC lpFormatEtc,
    CFile* pFile);

Parametri

lpFormatEtc
Punta alla struttura FORMATETC specificando il formato in cui vengono richieste le informazioni.

pFile
Punta a un oggetto CFile in cui eseguire il rendering dei dati.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Il formato specificato viene inserito in precedenza nell'oggetto COleDataSource utilizzando la funzione membro DelayRenderData per il rendering ritardato. L'implementazione predefinita di questa funzione restituisce semplicemente FALSE.

Si tratta di un override avanzato. Eseguire l'override di questa funzione per fornire i dati nel formato e nel supporto richiesti. A seconda dei dati, potrebbe essere necessario eseguire l'override di una delle altre versioni di questa funzione. Per gestire più supporti di archiviazione, eseguire l'override di OnRenderData. Se i dati si trovano in un file o sono di dimensioni variabili, eseguire l'override OnRenderFileDatadi . Per altre informazioni sul rendering ritardato come gestito da MFC, vedere l'articolo Oggetti dati e origini dati: Manipolazione.

Per altre informazioni, vedere la struttura FORMATETC e IDataObject::GetData in Windows SDK.

COleDataSource::OnRenderGlobalData

Chiamato dal framework per recuperare i dati nel formato specificato quando il supporto di archiviazione specificato è memoria globale.

virtual BOOL OnRenderGlobalData(
    LPFORMATETC lpFormatEtc,
    HGLOBAL* phGlobal);

Parametri

lpFormatEtc
Punta alla struttura FORMATETC specificando il formato in cui vengono richieste le informazioni.

phGlobal
Punta a un handle alla memoria globale in cui devono essere restituiti i dati. Se non è ancora stato allocato, questo parametro può essere NULL.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Il formato specificato viene inserito in precedenza nell'oggetto COleDataSource utilizzando la funzione membro DelayRenderData per il rendering ritardato. L'implementazione predefinita di questa funzione restituisce semplicemente FALSE.

Se phGlobal è NULL, deve essere allocato un nuovo HGLOBAL e restituito in phGlobal. In caso contrario, l'oggetto HGLOBAL specificato da phGlobal deve essere compilato con i dati. La quantità di dati inseriti in HGLOBAL non deve superare le dimensioni correnti del blocco di memoria. Inoltre, il blocco non può essere riallocato a una dimensione maggiore.

Si tratta di un override avanzato. Eseguire l'override di questa funzione per fornire i dati nel formato e nel supporto richiesti. A seconda dei dati, è possibile eseguire l'override di una delle altre versioni di questa funzione. Per gestire più supporti di archiviazione, eseguire l'override di OnRenderData. Se i dati si trovano in un file o sono di dimensioni variabili, eseguire l'override di OnRenderFileData. Per altre informazioni sul rendering ritardato come gestito da MFC, vedere l'articolo Oggetti dati e origini dati: Manipolazione.

Per altre informazioni, vedere la struttura FORMATETC e IDataObject::GetData in Windows SDK.

COleDataSource::OnSetData

Chiamato dal framework per impostare o sostituire i dati nell'oggetto COleDataSource nel formato specificato.

virtual BOOL OnSetData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium,
    BOOL bRelease);

Parametri

lpFormatEtc
Punta alla struttura FORMATETC che specifica il formato in cui vengono sostituiti i dati.

lpStgMedium
Punta alla struttura STGMEDIUM contenente i dati che sostituiranno il contenuto corrente dell'oggetto COleDataSource .

bRelease
Indica chi ha la proprietà del supporto di archiviazione dopo aver completato la chiamata di funzione. Il chiamante decide chi è responsabile del rilascio delle risorse allocate per conto del supporto di archiviazione. Il chiamante esegue questa operazione impostando bRelease. Se bRelease è diverso da zero, l'origine dati assume la proprietà, liberando il supporto al termine dell'utilizzo. Quando bRelease è 0, il chiamante mantiene la proprietà e l'origine dati può usare il supporto di archiviazione solo per la durata della chiamata.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

L'origine dati non assume la proprietà dei dati finché non viene ottenuta correttamente. Ovvero, non assume la proprietà se OnSetData restituisce 0. Se l'origine dati assume la proprietà, libera il supporto di archiviazione chiamando la funzione ReleaseStgMedium .

L'implementazione predefinita non esegue alcuna operazione. Eseguire l'override di questa funzione per sostituire i dati nel formato specificato. Si tratta di un override avanzato.

Per altre informazioni, vedere le strutture STGMEDIUM e FORMATETC e le funzioni ReleaseStgMedium e IDataObject::GetData in Windows SDK.

COleDataSource::SetClipboard

Inserisce i dati contenuti negli COleDataSource Appunti dopo aver chiamato una delle funzioni seguenti: CacheData, CacheGlobalData, DelayRenderData o DelayRenderFileData.

void SetClipboard();

Vedi anche

HIERSVR di esempio MFC
OCLIENT di esempio MFC
Classe CCmdTarget
Grafico della gerarchia
Classe COleDataObject