Dela via


MFC ActiveX-kontroller

En ActiveX-kontroll är en återanvändbar programvarukomponent baserad på komponentobjektmodellen (COM) som stöder en mängd olika OLE-funktioner och kan anpassas efter många programvarubehov.

Viktigt!

ActiveX är en äldre teknik som inte bör användas för ny utveckling. Mer information finns i ActiveX-kontroller.

ActiveX-kontroller är utformade för användning både i vanliga ActiveX-kontrollcontainrar och på Internet, på webbsidor på världsvida webben. Du kan skapa ActiveX-kontroller antingen med MFC, som beskrivs här eller med Active Template Library (ATL).

En ActiveX-kontroll kan rita sig själv i sitt eget fönster, svara på händelser (till exempel musklickningar) och hanteras via ett gränssnitt som innehåller egenskaper och metoder som liknar dem i Automation-objekt.

Dessa kontroller kan utvecklas för många användningsområden, till exempel databasåtkomst, dataövervakning eller grafering. Förutom portabiliteten stöder ActiveX-kontroller funktioner som tidigare inte var tillgängliga för ActiveX-kontroller, till exempel kompatibilitet med befintliga OLE-containrar och möjligheten att integrera menyerna med OLE-containermenyerna. Dessutom har en ActiveX-kontroll fullt stöd för Automation, vilket gör att kontrollen kan exponera läs-/skrivegenskaper och en uppsättning metoder som kan anropas av kontrollanvändaren.

Du kan skapa fönsterlösa ActiveX-kontroller och -kontroller som bara skapar ett fönster när de blir aktiva. Fönsterlösa kontroller påskyndar visningen av ditt program och gör det möjligt att ha transparenta och icke-sekterangulära kontroller. Du kan också läsa in ActiveX-kontrollegenskaper asynkront.

En ActiveX-kontroll implementeras som en processerver (vanligtvis ett litet objekt) som kan användas i valfri OLE-container. Observera att alla funktioner i en ActiveX-kontroll endast är tillgängliga när de används i en OLE-container som är utformad för att vara medveten om ActiveX-kontroller. Se Port ActiveX-kontroller till andra program för en lista över containrar som stöder ActiveX-kontroller. Den här containertypen, nedan kallad "kontrollcontainer", kan använda en ActiveX-kontroll med hjälp av kontrollens egenskaper och metoder och tar emot meddelanden från ActiveX-kontrollen i form av händelser. Följande bild visar den här interaktionen.

Samspel mellan ActiveX-kontrollcontainer och kontroll.
Interaktion mellan en ActiveX-kontrollcontainer och en AktivX-kontroll i fönster

För aktuell information om hur du optimerar dina ActiveX-kontroller, se MFC ActiveX Controls: Optimization.

Information om hur du skapar en MFC ActiveX-kontroll finns i Skapa ett ActiveX-kontrollprojekt.

Mer information finns i:

Grundläggande komponenter i en ActiveX-kontroll

En ActiveX-kontroll använder flera programmässiga element för att interagera effektivt med en kontrollcontainer och med användaren. Det här är klass COleControl, en uppsättning funktioner för händelseavfyrning och en sändningskarta.

Varje ActiveX-kontrollobjekt som du utvecklar ärver en kraftfull uppsättning funktioner från dess MFC-basklass, COleControl. Dessa funktioner omfattar aktivering på plats och Automation-logik. COleControl kan ge kontrollobjektet samma funktioner som ett MFC-fönsterobjekt, plus möjligheten att utlösa händelser. COleControl kan också tillhandahålla fönsterlösa kontroller, som förlitar sig på sin container för att få hjälp med några av de funktioner som ett fönster tillhandahåller (musinspelning, tangentbordsfokus, rullning), men erbjuder mycket snabbare visning.

Eftersom kontrollklassen härleds från COleControlärver den möjligheten att skicka, eller "avfyra", meddelanden, som kallas händelser, till kontrollcontainern när vissa villkor uppfylls. Dessa händelser används för att meddela kontrollcontainern när något viktigt händer i kontrollen. Du kan skicka ytterligare information om en händelse till kontrollcontainern genom att koppla parametrar till händelsen. Mer information om ActiveX-kontrollhändelser finns i artikeln MFC ActiveX Controls: Events( MFC ActiveX Controls: Events).

Det sista elementet är en sändningskarta som används för att exponera en uppsättning funktioner (kallas metoder) och attribut (kallas egenskaper) för kontrollanvändaren. Med egenskaper kan kontrollcontainern eller kontrollanvändaren ändra kontrollen på olika sätt. Användaren kan ändra kontrollens utseende, ändra vissa värden för kontrollen eller göra begäranden om kontrollen, till exempel komma åt en specifik datamängd som kontrollen underhåller. Det här gränssnittet bestäms av kontrollutvecklaren och definieras med hjälp av klassvyn. Mer information om ActiveX-kontrollmetoder och -egenskaper finns i artiklarna MFC ActiveX Controls: Methods and Properties (MFC ActiveX Controls: Methods and Properties).

Interaktion mellan kontroller med Windows- och ActiveX-kontrollcontainrar

När en kontroll används i en kontrollcontainer använder den två mekanismer för att kommunicera: den exponerar egenskaper och metoder och utlöser händelser. Följande bild visar hur dessa två mekanismer implementeras.

ActiveX-kontrollen kommunicerar med containern.
Kommunikation mellan en ActiveX-kontrollcontainer och en ActiveX-kontroll

Föregående bild illustrerar också hur andra OLE-gränssnitt (förutom automatisering och händelser) hanteras av kontroller.

All kontrolls kommunikation med containern utförs av COleControl. Om du vill hantera vissa av containerns begäranden COleControl anropar du medlemsfunktioner som implementeras i kontrollklassen. Alla metoder och vissa egenskaper hanteras på det här sättet. Kontrollens klass kan också initiera kommunikation med containern genom att anropa COleControls medlemsfunktioner. Händelser utlöses på det här sättet.

Aktiva och inaktiva tillstånd för en ActiveX-kontroll

En kontroll har två grundläggande tillstånd: aktiv och inaktiv. Traditionellt särskiljdes dessa stater av om kontrollen hade ett fönster. En aktiv kontroll hade ett fönster. en inaktiv kontroll gjorde det inte. Med införandet av fönsterlös aktivering är den här skillnaden inte längre universell, men gäller fortfarande för många kontroller.

När en fönsterlös kontroll aktiveras anropas musinsamling, tangentbordsfokus, rullning och andra fönstertjänster från containern. Du kan också ge musinteraktion till inaktiva kontroller samt skapa kontroller som väntar tills de har aktiverats för att skapa ett fönster.

När en kontroll med ett fönster blir aktiv kan den interagera fullt ut med kontrollcontainern, användaren och Windows. Bilden nedan visar kommunikationsvägarna mellan ActiveX-kontrollen, kontrollcontainern och operativsystemet.

Msg-bearbetning i aktiv fönsterbaserad ActiveX-kontroll.
Windows-meddelandebearbetning i en AktivX-kontroll i fönster (när aktiv)

Serialisering

Möjligheten att serialisera data, som ibland kallas beständighet, gör att kontrollen kan skriva värdet för dess egenskaper till beständig lagring. Kontroller kan sedan återskapas genom att läsa objektets tillstånd från lagringen.

Observera att en kontroll inte ansvarar för att få åtkomst till lagringsmediet. I stället ansvarar kontrollens container för att ge kontrollen ett lagringsmedium som ska användas vid lämpliga tidpunkter. Mer information om serialisering finns i artikeln MFC ActiveX Controls: Serialisering. Information om hur du optimerar serialisering finns i Optimera beständighet och initiering i ActiveX-kontroller: Optimering.

Installera ActiveX-kontrollklasser och -verktyg

När du installerar Visual C++installeras MFC ActiveX-kontrollklasserna och återförsäljar- och felsöknings-DLL:er för ActiveX-kontrollkörning automatiskt om ActiveX-kontroller väljs i Installation (de är markerade som standard).

Som standard installeras ActiveX-kontrollklasserna och -verktygen i följande underkataloger under \Program Files\Microsoft Visual Studio .NET:

  • \Common7\Tools

    Innehåller testcontainerfilerna (TstCon32.exeoch dess hjälpfiler).

  • \Vc7\atlmfc\include

    Innehåller de inkluderingsfiler som behövs för att utveckla ActiveX-kontroller med MFC

  • \Vc7\atlmfc\src\mfc

    Innehåller källkoden för specifika ActiveX-kontrollklasser i MFC

  • \Vc7\atlmfc\lib

    Innehåller de bibliotek som krävs för att utveckla ActiveX-kontroller med MFC

Det finns också exempel för MFC ActiveX-kontroller. Mer information om dessa exempel finns i Kontrollexempel: MFC-Based ActiveX-kontroller

Se även

Element i användargränssnittet