Dela via


MFC ActiveX-kontroller: Lägga till anpassade metoder

Anpassade metoder skiljer sig från lagermetoder eftersom de inte redan implementeras av COleControl. Du måste ange implementeringen för varje anpassad metod som du lägger till i din kontroll.

Viktigt!

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

En ActiveX-kontrollanvändare kan när som helst anropa en anpassad metod för att utföra kontrollspecifika åtgärder. Posten i dispatch-kartan för anpassade metoder är av formatet DISP_FUNCTION.

Lägga till en anpassad metod med guiden Lägg till metod

Följande procedur visar hur du lägger till den anpassade metoden PtInCircle i en ActiveX-kontrolls skelettkod. PtInCircle avgör om koordinaterna som skickas till kontrollen finns inom eller utanför cirkeln. Samma procedur kan också användas för att lägga till andra anpassade metoder. Ersätt namnet på din anpassade metod och dess parametrar med namnet och parametrarna för PtInCircle-metoden.

Anmärkning

I det InCircle här exemplet används funktionen från artikeln Händelser. Mer information om den här funktionen finns i artikeln MFC ActiveX Controls: Adding Custom Events to an ActiveX Control.

Så här lägger du till den anpassade Metoden PtInCircle med hjälp av guiden Lägg till metod

  1. Läs in kontrollens projekt.

  2. I Klassvy expanderar du biblioteksnoden för din kontroll.

  3. Högerklicka på gränssnittsnoden för kontrollen (biblioteksnodens andra nod) för att öppna snabbmenyn.

  4. Klicka på Lägg till på snabbmenyn och klicka sedan på Lägg till metod.

    Då öppnas guiden Lägg till metod.

  5. I rutan Metodnamn skriver du PtInCircle.

  6. I rutan Internt namn skriver du namnet på metodens interna funktion eller använder standardvärdet (i det här fallet PtInCircle).

  7. I rutan Returtyp klickar du på VARIANT_BOOL för metodens returtyp.

  8. Med hjälp av kontrollerna Parametertyp och Parameternamn lägger du till en parameter med namnet xCoord (typ OLE_XPOS_PIXELS).

  9. Med hjälp av kontrollerna Parametertyp och Parameternamn lägger du till en parameter med namnet yCoord (typ OLE_YPOS_PIXELS).

  10. Klicka på Finish.

Lägg till metodguideändringar för anpassade metoder

När du lägger till en anpassad metod gör guiden Lägg till metod några ändringar i kontrollklassrubriken (. H) och implementering (. CPP)-filer. Följande rad läggs till i deklarationen för dispatch-kartan i kontrollklassens header (.H)-fil:

VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Den här koden deklarerar en dispatch-metodhanterare med namnet PtInCircle. Den här funktionen kan anropas av kontrollanvändaren med hjälp av det externa namnet PtInCircle.

Följande rad läggs till i kontrollens . IDL-fil:

[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Den här raden tilldelar PtInCircle metoden ett specifikt ID-nummer, metodens position i listan Lägg till metodguiden metoder och egenskaper. Eftersom guiden Lägg till metod användes för att lägga till den anpassade metoden lades posten för den automatiskt till i projektets . IDL-fil.

Dessutom läggs följande rad i implementationsfilen (.CPP) för kontrollklassen till i kontrollens sändningskarta:

DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

Det DISP_FUNCTION makrot mappar metoden PtInCircle till kontrollens hanteringsfunktion, PtInCircle, deklarerar returtypen som VARIANT_BOOL och deklarerar två parametrar av typen VTS_XPOS_PIXELS och VTS_YPOSPIXELS skickas till PtInCircle.

Slutligen lägger guiden Lägg till metod till stubfunktionen CSampleCtrl::PtInCircle längst ned i kontrollens implementeringsfil (.CPP). För PtInCircle att fungera som tidigare sagt måste den ändras på följande sätt:

VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   CPoint point(xCoord, yCoord);
   return InCircle(point);
}

Se även

MFC ActiveX-kontroller
Webbläsarikoner för klassvy och objekt