Megosztás a következőn keresztül:


COleDataSource osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Gyorsítótárként működik, amelybe az alkalmazás az adatátviteli műveletek, például vágólap vagy húzási műveletek során az általa kínált adatokat helyezi el.

Szemantika

class COleDataSource : public CCmdTarget

Tagok

Nyilvános konstruktorok

Név Description
COleDataSource::COleDataSource Egy COleDataSource objektumot hoz létre.

Nyilvános metódusok

Név Description
COleDataSource::CacheData Adott formátumban kínál adatokat egy STGMEDIUM struktúra használatával.
COleDataSource::CacheGlobalData Megadott formátumban kínál adatokat egy HGLOBAL használatával.
COleDataSource::D elayRenderData Megadott formátumban kínál adatokat késleltetett renderelés használatával.
COleDataSource::D elayRenderFileData Adott formátumban kínál adatokat egy CFile mutatóban.
COleDataSource::D elaySetData Minden olyan formátumra meghívva, amely támogatott a .OnSetData
COleDataSource::D oDragDrop Húzási műveleteket hajt végre egy adatforrással.
COleDataSource::Üres Kiüríti az COleDataSource adatobjektumot.
COleDataSource::FlushClipboard Az összes adatot a vágólapra rendereli.
COleDataSource::GetClipboardOwner Ellenőrzi, hogy a vágólapra helyezett adatok továbbra is ott vannak-e.
COleDataSource::OnRenderData Késleltetett renderelés részeként kéri le az adatokat.
COleDataSource::OnRenderFileData Adatokat kér le a CFile késleltetett renderelés részeként.
COleDataSource::OnRenderGlobalData Adatokat kér le egy HGLOBAL-fájlba a késleltetett renderelés részeként.
COleDataSource::OnSetData Az objektumban lévő COleDataSource adatok cseréjére van meghívva.
COleDataSource::SetClipboard Objektumot COleDataSource helyez el a vágólapon.

Megjegyzések

OLE-adatforrásokat közvetlenül is létrehozhat. A COleClientItem és a COleServerItem osztályok OLE-adatforrásokat hoznak létre a tagfüggvényeikre CopyToClipboardDoDragDrop válaszul. Rövid leírást a COleServerItem::CopyToClipboard című témakörben talál. Bírálja felül az OnGetClipboardData ügyfélelem vagy a kiszolgálóelemosztály tagfüggvényét, hogy további vágólapformátumokat adjon hozzá az adatokhoz az OLE adatforrásban, amelyet a CopyToClipboard vagy DoDragDrop tagfüggvényhez hoztak létre.

Amikor adatokat szeretne előkészíteni az átvitelre, létre kell hoznia egy objektumot ennek az osztálynak, és meg kell töltenie az adatokat az adatokhoz legmegfelelőbb módszerrel. Az adatforrásba való beszúrás módját közvetlenül befolyásolja, hogy az adatok azonnal (azonnali renderelés) vagy igény szerint (késleltetett renderelés) kerülnek-e rendelkezésre. Minden olyan vágólapformátum esetében, amelyben adatokat ad meg a használni kívánt vágólapformátum (és egy opcionális FORMATETC-struktúra ) átadásával, hívja meg a DelayRenderData-t.

Az adatforrásokról és az adatátvitelről további információt az Adatobjektumok és adatforrások (OLE) című cikkben talál. Emellett a vágólap témakörei az OLE vágólap mechanizmust ismertetik.

Öröklési hierarchia

CObject

CCmdTarget

COleDataSource

Requirements

Fejléc: afxole.h

COleDataSource::CacheData

A függvény meghívásával megadhat egy formátumot, amelyben az adatok az adatátviteli műveletek során lesznek felajánlva.

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

Paraméterek

cfFormat
A vágólap formátuma, amelyben az adatokat fel kell ajánlani. Ez a paraméter lehet az előre definiált vágólapformátumok egyike, vagy a natív Windows RegisterClipboardFormat függvény által visszaadott érték.

lpStgMedium
Egy STGMEDIUM-struktúrára mutat, amely a megadott formátumban tartalmazza az adatokat.

lpFormatEtc
Egy FORMATETC-struktúrára mutat, amely leírja az adatok felajánlásának formátumát. Adjon meg egy értéket ehhez a paraméterhez, ha a cfFormat által megadott vágólapformátumon túl további formázási információkat szeretne megadni. Null érték esetén a rendszer az alapértelmezett értékeket használja a FORMATETC struktúra többi mezőjéhez.

Megjegyzések

Meg kell adnia az adatokat, mert ez a függvény azonnali rendereléssel biztosítja azokat. Az adatok gyorsítótárazva lesznek, amíg szükséges.

Adja meg az adatokat STGMEDIUM-struktúra használatával. A tagfüggvényt akkor is használhatja CacheGlobalData , ha a megadott adatok mennyisége elég kicsi ahhoz, hogy a HGLOBAL használatával hatékonyan lehessen továbbítani.

Az lpStgMedium tagjának CacheDataptdlpFormatEtc és tartalmának hívása után az adatobjektum, nem pedig a hívóé.

Késleltetett renderelés használatához hívja meg a DelayRenderData vagy a DelayRenderFileData tagfüggvényt. Az MFC által kezelt késleltetett renderelésről további információt az Adatobjektumok és adatforrások: Manipuláció című cikkben talál.

További információ: STGMEDIUM és FORMATETC struktúrák a Windows SDK-ban.

További információ: RegisterClipboardFormat a Windows SDK-ban.

COleDataSource::CacheGlobalData

A függvény meghívásával megadhat egy formátumot, amelyben az adatok az adatátviteli műveletek során lesznek felajánlva.

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

Paraméterek

cfFormat
A vágólap formátuma, amelyben az adatokat fel kell ajánlani. Ez a paraméter lehet az előre definiált vágólapformátumok egyike, vagy a natív Windows RegisterClipboardFormat függvény által visszaadott érték.

hGlobal
Kezelje a megadott formátumú adatokat tartalmazó globális memóriablokkot.

lpFormatEtc
Egy FORMATETC-struktúrára mutat, amely leírja az adatok felajánlásának formátumát. Adjon meg egy értéket ehhez a paraméterhez, ha a cfFormat által megadott vágólapformátumon túl további formázási információkat szeretne megadni. Null érték esetén a rendszer az alapértelmezett értékeket használja a FORMATETC struktúra többi mezőjéhez.

Megjegyzések

Ez a függvény azonnali rendereléssel biztosítja az adatokat, ezért a függvény meghívásakor meg kell adnia az adatokat; az adatok gyorsítótárazva lesznek, amíg szükség nem lesz rá. CacheData A tagfüggvényt akkor használja, ha nagy mennyiségű adatot szolgáltat, vagy strukturált tárolóeszközt igényel.

Késleltetett renderelés használatához hívja meg a DelayRenderData vagy a DelayRenderFileData tagfüggvényt. Az MFC által kezelt késleltetett renderelésről további információt az Adatobjektumok és adatforrások: Manipuláció című cikkben talál.

További információ: FORMATETC struktúra a Windows SDK-ban.

További információ: RegisterClipboardFormat a Windows SDK-ban.

COleDataSource::COleDataSource

Egy COleDataSource objektumot hoz létre.

COleDataSource();

COleDataSource::D elayRenderData

A függvény meghívásával megadhat egy formátumot, amelyben az adatok az adatátviteli műveletek során lesznek felajánlva.

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

Paraméterek

cfFormat
A vágólap formátuma, amelyben az adatokat fel kell ajánlani. Ez a paraméter lehet az előre definiált vágólapformátumok egyike, vagy a natív Windows RegisterClipboardFormat függvény által visszaadott érték.

lpFormatEtc
Egy FORMATETC-struktúrára mutat, amely leírja az adatok felajánlásának formátumát. Adjon meg egy értéket ehhez a paraméterhez, ha a cfFormat által megadott vágólapformátumon túl további formázási információkat szeretne megadni. Null érték esetén a rendszer az alapértelmezett értékeket használja a FORMATETC struktúra többi mezőjéhez.

Megjegyzések

Ez a függvény késleltetett rendereléssel biztosítja az adatokat, így az adatok nem lesznek azonnal megadva. Az adatok lekéréséhez az OnRenderData vagy az OnRenderGlobalData tagfüggvény hívható meg.

Ezt a függvényt akkor használja, ha nem egy objektumon keresztül CFile adja meg az adatokat. Ha egy CFile objektumon keresztül szeretné megadni az adatokat, hívja meg a DelayRenderFileData tagfüggvényt. Az MFC által kezelt késleltetett renderelésről további információt az Adatobjektumok és adatforrások: Manipuláció című cikkben talál.

Az azonnali renderelés használatához hívja meg a CacheData vagy a CacheGlobalData tagfüggvényt.

További információ: FORMATETC struktúra a Windows SDK-ban.

További információ: RegisterClipboardFormat a Windows SDK-ban.

COleDataSource::D elayRenderFileData

A függvény meghívásával megadhat egy formátumot, amelyben az adatok az adatátviteli műveletek során lesznek felajánlva.

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

Paraméterek

cfFormat
A vágólap formátuma, amelyben az adatokat fel kell ajánlani. Ez a paraméter lehet az előre definiált vágólapformátumok egyike, vagy a natív Windows RegisterClipboardFormat függvény által visszaadott érték.

lpFormatEtc
Egy FORMATETC-struktúrára mutat, amely leírja az adatok felajánlásának formátumát. Adjon meg egy értéket ehhez a paraméterhez, ha a cfFormat által megadott vágólapformátumon túl további formázási információkat szeretne megadni. Null érték esetén a rendszer az alapértelmezett értékeket használja a FORMATETC struktúra többi mezőjéhez.

Megjegyzések

Ez a függvény késleltetett rendereléssel biztosítja az adatokat, így az adatok nem lesznek azonnal megadva. A függvény meghívja az OnRenderFileData tagfüggvényt az adatok lekéréséhez.

Ezt a függvényt akkor használja, ha objektumot CFile használ az adatok megadásához. Ha nem használ objektumot CFile , hívja meg a DelayRenderData tagfüggvényt. Az MFC által kezelt késleltetett renderelésről további információt az Adatobjektumok és adatforrások: Manipuláció című cikkben talál.

Az azonnali renderelés használatához hívja meg a CacheData vagy a CacheGlobalData tagfüggvényt.

További információ: FORMATETC struktúra a Windows SDK-ban.

További információ: RegisterClipboardFormat a Windows SDK-ban.

COleDataSource::D elaySetData

Hívja meg ezt a függvényt az adatforrás tartalmának módosításához.

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

Paraméterek

cfFormat
A vágólap formátuma, amelyben az adatokat el szeretné helyezni. Ez a paraméter lehet az előre definiált vágólapformátumok egyike, vagy a natív Windows RegisterClipboardFormat függvény által visszaadott érték.

lpFormatEtc
Egy FORMATETC-struktúrára mutat, amely leírja az adatok cseréjének formátumát. Adjon meg egy értéket ehhez a paraméterhez, ha a cfFormat által megadott vágólapformátumon túl további formázási információkat szeretne megadni. Null érték esetén a rendszer az alapértelmezett értékeket használja a FORMATETC struktúra többi mezőjéhez.

Megjegyzések

Amikor ez megtörténik, a keretrendszer meghívja az OnSetData-t. Ez csak akkor használatos, ha a keretrendszer a COleServerItem::GetDataSource adatforrásból adja vissza az adatforrást. Ha DelaySetData nincs meghívva, a OnSetData függvény soha nem lesz meghívva. DelaySetData minden támogatott vágólaphoz vagy FORMATETC formátumhoz meg kell hívni.

További információ: FORMATETC struktúra a Windows SDK-ban.

További információ: RegisterClipboardFormat a Windows SDK-ban.

COleDataSource::D oDragDrop

Hívja meg a DoDragDrop tagfüggvényt az adatforrás húzási műveletének végrehajtásához, általában egy CWnd::OnLButtonDown kezelőben.

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

Paraméterek

dwEffects
Az adatforráson engedélyezett húzási műveletek. Az alábbiak közül egy vagy több lehet:

  • DROPEFFECT_COPY Másolási művelet végrehajtható.

  • DROPEFFECT_MOVE Áthelyezési műveletet lehet végrehajtani.

  • DROPEFFECT_LINK Létre lehet hozni egy hivatkozást az elvetett adatokról az eredeti adatokra.

  • DROPEFFECT_SCROLL Azt jelzi, hogy húzási görgetési művelet történhet.

lpRectStartDrag
Mutasson arra a téglalapra, amely meghatározza a húzás tényleges indításának helyét. További információkért lásd a következő Megjegyzések szakaszt.

pDropSource
Egy legördülő forrásra mutat. Ha NULL, akkor a COleDropSource alapértelmezett implementációja lesz használva.

Visszaadott érték

A húzási művelet által generált effektus; ellenkező esetben DROPEFFECT_NONE, ha a művelet nem indul el, mert a felhasználó a megadott téglalap elhagyása előtt kiadta az egérgombot.

Megjegyzések

A húzási művelet nem indul el azonnal. Megvárja, amíg az egérmutató elhagyja az lpRectStartDrag által megadott téglalapot, vagy amíg egy megadott számú ezredmásodperc el nem telik. Ha az lpRectStartDrag értéke NULL, a téglalap mérete egy képpont.

A késleltetési időt egy beállításkulcs-beállítás határozza meg. A késleltetési időt a CWinApp::WriteProfileString vagy a CWinApp::WriteProfileInt meghívásával módosíthatja. Ha nem adja meg a késleltetési időt, a rendszer 200 ezredmásodperc alapértelmezett értéket használ. Az húzási késleltetési idő a következőképpen lesz tárolva:

  • A Windows NT húzási késleltetési ideje a \Windows\DragDelay HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\IniFileMapping\win.initárolja.

  • A Windows 3.x húzási késleltetési ideje a WIN-ben van tárolva. INI-fájl, a [Windows} szakasz alatt.

  • A Windows 95/98 húzza a késleltetési időt a WIN gyorsítótárazott verziójában tárolja. INI.

További információ az húzással kapcsolatos késleltetési információk beállításjegyzékben vagy a beállításjegyzékben való tárolásáról. INI-fájl: WriteProfileString a Windows SDK-ban.

További információt az OLE húzással és húzással foglalkozó cikkben talál.

COleDataSource::Üres

Hívja meg ezt a függvényt az COleDataSource adatok objektumának kiürítéséhez.

void Empty();

Megjegyzések

A gyorsítótárazott és a késleltetett renderelési formátumok is kiürítésre kerülnek, hogy újra felhasználhatók legyenek.

További információ: ReleaseStgMedium a Windows SDK-ban.

COleDataSource::FlushClipboard

Rendereli a vágólapon lévő adatokat, majd lehetővé teszi az adatok beillesztését a vágólapról az alkalmazás leállítása után.

static void PASCAL FlushClipboard();

Megjegyzések

A SetClipboard használatával adatokat helyezhet el a vágólapon.

COleDataSource::GetClipboardOwner

Meghatározza, hogy a vágólap adatai megváltoztak-e a SetClipboard legutóbbi meghívása óta, és ha igen, azonosítja az aktuális tulajdonost.

static COleDataSource* PASCAL GetClipboardOwner();

Visszaadott érték

Az adatforrás jelenleg a vágólapon, vagy NULL, ha nincs semmi a vágólapon, vagy ha a vágólap nem a hívó alkalmazás tulajdonában van.

COleDataSource::OnRenderData

A keretrendszer meghívta, hogy a megadott formátumban kérje le az adatokat.

virtual BOOL OnRenderData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium);

Paraméterek

lpFormatEtc
A FORMATETC-struktúrára mutat, amely megadja az információkérés formátumát.

lpStgMedium
Egy STGMEDIUM-struktúrára mutat, amelyben az adatokat vissza kell adni.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

A megadott formátum egy korábban az COleDataSource objektumban a DelayRenderData vagy a DelayRenderFileData tagfüggvény használatával a késleltetett rendereléshez. A függvény alapértelmezett implementációja meghívja az OnRenderFileData vagy az OnRenderGlobalData függvényt, ha a megadott tárolóeszköz fájl vagy memória. Ha egyik formátum sem jelenik meg, akkor az alapértelmezett implementáció 0 értéket ad vissza, és semmit sem tesz. Az MFC által kezelt késleltetett renderelésről további információt az Adatobjektumok és adatforrások: Manipuláció című cikkben talál.

Ha az lpStgMedium-tymed> TYMED_NULL, azSTGMEDIUMlpFormatEtc-tymed> által megadott módon kell kiosztani és kitölteni. Ha nem TYMED_NULL, az STGMEDIUM adatokat a helyén kell kitölteni.

Ez egy speciális felülírható. Felülbírálja ezt a függvényt, hogy a kért formátumban és adathordozón adja meg az adatokat. Az adatoktól függően érdemes lehet inkább felülbírálni a függvény többi verziójának egyikét. Ha az adatok kicsik és méretben rögzítettek, felülbírálás OnRenderGlobalData. Ha az adatok fájlban vagy változó méretűek, felülbírálhatja a fájlt OnRenderFileData.

További információ: STGMEDIUM és FORMATETC struktúrák, TYMED enumerálási típus és IDataObject::GetData a Windows SDK-ban.

COleDataSource::OnRenderFileData

A keretrendszer meghívja, hogy a megadott formátumban kérje le az adatokat, ha a megadott tárolóeszköz egy fájl.

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

Paraméterek

lpFormatEtc
A FORMATETC-struktúrára mutat, amely megadja az információkérés formátumát.

pFile
Egy CFile objektumra mutat, amelyben az adatokat renderelni kell.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

A megadott formátum egy korábban az COleDataSource objektumba a DelayRenderData tagfüggvényt használva késleltetett renderelés céljából. A függvény alapértelmezett implementációja egyszerűen HAMIS értéket ad vissza.

Ez egy speciális felülírható. Felülbírálja ezt a függvényt, hogy a kért formátumban és adathordozón adja meg az adatokat. Az adatoktól függően előfordulhat, hogy inkább felül szeretné bírálni a függvény másik verzióját. Ha több tárolási adathordozót szeretne kezelni, bírálja felül az OnRenderData-t. Ha az adatok fájlban vagy változó méretűek, felülbírálhatja a fájlt OnRenderFileData. Az MFC által kezelt késleltetett renderelésről további információt az Adatobjektumok és adatforrások: Manipuláció című cikkben talál.

További információ: FORMATETC struktúra és IDataObject::GetData a Windows SDK-ban.

COleDataSource::OnRenderGlobalData

A keretrendszer meghívja, hogy a megadott formátumban kérje le az adatokat, ha a megadott tárolóeszköz globális memória.

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

Paraméterek

lpFormatEtc
A FORMATETC-struktúrára mutat, amely megadja az információkérés formátumát.

phGlobal
Egy leíróra mutat a globális memóriára, amelyben az adatokat vissza kell adni. Ha még nincs lefoglalva, ez a paraméter null értékű lehet.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

A megadott formátum egy korábban az COleDataSource objektumba a DelayRenderData tagfüggvényt használva késleltetett renderelés céljából. A függvény alapértelmezett implementációja egyszerűen HAMIS értéket ad vissza.

Ha a phGlobal null értékű, akkor egy új HGLOBAL-t kell lefoglalni és visszaadni a phGlobalban. Ellenkező esetben a phGlobal által megadott HGLOBAL-t meg kell tölteni az adatokkal. A HGLOBAL-ban elhelyezett adatok mennyisége nem haladhatja meg a memóriablokk aktuális méretét. Emellett a blokk nem helyezhető át nagyobb méretre.

Ez egy speciális felülírható. Felülbírálja ezt a függvényt, hogy a kért formátumban és adathordozón adja meg az adatokat. Az adatoktól függően érdemes lehet inkább felülbírálni a függvény többi verziójának egyikét. Ha több tárolási adathordozót szeretne kezelni, bírálja felül az OnRenderData-t. Ha az adatok fájlban vagy változó méretűek, felülbírálhatja az OnRenderFileData fájlt. Az MFC által kezelt késleltetett renderelésről további információt az Adatobjektumok és adatforrások: Manipuláció című cikkben talál.

További információ: FORMATETC struktúra és IDataObject::GetData a Windows SDK-ban.

COleDataSource::OnSetData

A keretrendszer meghívta, hogy állítsa be vagy cserélje le az COleDataSource objektumban lévő adatokat a megadott formátumban.

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

Paraméterek

lpFormatEtc
A FORMATETC-struktúrára mutat, amely megadja az adatok cseréjének formátumát.

lpStgMedium
Az objektum aktuális tartalmát COleDataSource lecserélő adatokat tartalmazó STGMEDIUM-struktúrára mutat.

bRelease
Azt jelzi, hogy ki rendelkezik a tárolási adathordozó tulajdonosával a függvényhívás befejezése után. A hívó dönti el, hogy ki felelős a tárolóeszköz nevében lefoglalt erőforrások felszabadításáért. A hívó ezt a bRelease beállításával teszi. Ha a bRelease nem rezero, az adatforrás tulajdonjogot kap, és felszabadítja a adathordozót, amikor befejezte a használatát. Ha a bRelease 0, a hívó megtartja a tulajdonjogot, és az adatforrás csak a hívás idejére használhatja a tárolóeszközt.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

Az adatforrás mindaddig nem veszi át az adatok tulajdonjogát, amíg sikeresen be nem szerezte azokat. Ez azt jelenti, hogy nem veszi át a tulajdonjogot, ha OnSetData 0-t ad vissza. Ha az adatforrás tulajdonjogot vállal, felszabadítja a tárolóeszközt a ReleaseStgMedium függvény meghívásával.

Az alapértelmezett implementáció nem végez semmit. A függvény felülbírálása a megadott formátumban lévő adatok lecseréléséhez. Ez egy speciális felülírható.

További információ: STGMEDIUM és FORMATETC struktúrák, valamint a ReleaseStgMedium és az IDataObject::GetData függvények a Windows SDK-ban.

COleDataSource::SetClipboard

Az objektumban COleDataSource lévő adatokat a vágólapra helyezi, miután meghívta a következő függvények egyikét: CacheData, CacheGlobalData, DelayRenderData vagy DelayRenderFileData.

void SetClipboard();

Lásd még

MFC-minta HIERSVR
MFC-minta OCLIENT
CCmdTarget osztály
hierarchiadiagram
COleDataObject osztály