Dela via


Containrar: Implementera en container

Den här artikeln sammanfattar proceduren för att implementera en container och pekar på andra artiklar som ger mer detaljerade förklaringar om hur du implementerar containrar. Den innehåller även några valfria OLE-funktioner som du kanske vill implementera och de artiklar som beskriver dessa funktioner.

Förbereda din CWinApp-härledda klass

  1. Initiera OLE-biblioteken genom att anropa AfxOleInit i InitInstance medlemsfunktionen.

  2. Anropa CDocTemplate::SetContainerInfo i InitInstance för att tilldela menyn och acceleratorresurserna som används när ett inbäddat objekt aktiveras på plats. Mer information om det här avsnittet finns i Aktivering.

De här funktionerna tillhandahålls automatiskt när du använder MFC-programguiden för att skapa ett containerprogram. Se Skapa ett MFC EXE-program.

Att förbereda din visningsklass

  1. Håll reda på markerade objekt genom att behålla en pekare eller en lista med pekare om du stöder flera val till de markerade objekten. Funktionen OnDraw måste teckna alla OLE-objekt.

  2. Åsidosätt IsSelected för att kontrollera om objektet som skickades till det är för närvarande markerat.

  3. Implementera en OnInsertObject meddelandehanterare för att visa dialogrutan Infoga objekt .

  4. Implementera en OnSetFocus meddelandehanterare för att överföra fokus från vyn till ett aktivt OLE Embedded-objekt på plats.

  5. Implementera en OnSize meddelandehanterare för att informera ett OLE Embedded-objekt om att det behöver ändra sin rektangel för att återspegla ändringen i storleken på dess innehållande vy.

Eftersom implementeringen av dessa funktioner varierar dramatiskt från ett program till ett annat, tillhandahåller programguiden bara en grundläggande implementering. Du måste förmodligen anpassa dessa funktioner för att programmet ska fungera korrekt. Ett exempel på detta finns i CONTAINER-exemplet .

Hantera inbäddade och länkade objekt

  1. Härled en klass från COleClientItem. Objekt i den här klassen representerar objekt som har bäddats in i eller länkats till ditt OLE-dokument.

  2. Åsidosätt OnChange, OnChangeItemPositionoch OnGetItemPosition. Dessa funktioner hanterar storlek, placering och ändring av inbäddade och länkade objekt.

Programguiden härleder klassen åt dig, men du måste förmodligen åsidosätta OnChange och de andra funktionerna som anges med den i steg 2 i föregående procedur. Skelettimplementeringarna måste anpassas för de flesta program, eftersom dessa funktioner implementeras på ett annat sätt än ett program till nästa. Exempel på detta finns i MFC-exemplen DRAWCLI och CONTAINER.

Du måste lägga till ett antal objekt i containerprogrammets menystruktur för att stödja OLE. Mer information om dessa finns i Menyer och resurser: Containertillägg.

Du kanske också vill ha stöd för några av följande funktioner i ditt containerprogram:

  • Direkt aktivering när du redigerar ett inbäddat objekt.

    Mer information finns i Aktivering.

  • Skapa OLE-objekt genom att dra och släppa en markering från ett serverprogram.

    Mer information finns i OLE dra och släpp.

  • Länkar till inbäddade objekt eller kombinationscontainer/serverprogram.

    Mer information finns i Containrar: Avancerade funktioner.

Se även

Behållare
Containrar: Klientobjekt