Delen via


MFC ActiveX-besturingselementen: Geavanceerde implementatie van eigenschappen

In dit artikel worden onderwerpen beschreven met betrekking tot het implementeren van geavanceerde eigenschappen in een ActiveX-besturingselement.

Belangrijk

ActiveX is een verouderde technologie die niet mag worden gebruikt voor nieuwe ontwikkeling. Zie ActiveX-besturingselementen voor meer informatie over moderne technologieën die ActiveX vervangen.

eigenschappen voor Read-Only en Write-Only

De wizard Eigenschap toevoegen biedt een snelle en eenvoudige methode voor het implementeren van alleen-lezen- of alleen-schrijven-eigenschappen voor het besturingselement.

Een alleen-lezen- of alleen-schrijven-eigenschap implementeren

  1. Laad het project van uw besturingselement.

  2. Vouw in de klasseweergave het bibliotheekknooppunt van uw besturingselement uit.

  3. Klik met de rechtermuisknop op het interfaceknooppunt voor uw besturingselement (het tweede knooppunt van het bibliotheekknooppunt) om het snelmenu te openen.

  4. Klik in het snelmenu op Toevoegen en klik vervolgens op Eigenschap toevoegen.

    Hiermee wordt de Eigenschap toevoegen-wizard geopend.

  5. Typ in het vak Eigenschapsnaam de naam van uw eigenschap.

  6. Klik voor implementatietype op Methoden ophalen/instellen.

  7. Selecteer in het vak Eigenschapstype het juiste type voor de eigenschap.

  8. Als u een alleen-lezen eigenschap wilt, maak dan de naam van de functie Set leeg. Als u een schrijf-eigenschap wilt, laat de naam van de Ophalen-functie leeg.

  9. Klik op Voltooien.

Wanneer u dit doet, voegt de wizard Eigenschap toevoegen de functie SetNotSupported of GetNotSupported in de dispatchmapvermelding in, ter vervanging van een normale functie Get of Set.

Als u een bestaande eigenschap wilt wijzigen in alleen-lezen of alleen-schrijven, kunt u de verzendkaart handmatig bewerken en de overbodige set- of get-functie uit de besturingsklasse verwijderen.

Als u wilt dat een eigenschap voorwaardelijk alleen-lezen of alleen-schrijven is (bijvoorbeeld alleen wanneer uw besturingselement in een bepaalde modus werkt), kunt u de functie Set of Ophalen opgeven, zoals normaal, en de SetNotSupported of GetNotSupported functie indien van toepassing aanroepen. Voorbeeld:

void CMyAxUICtrl::SetMyProperty(SHORT newVal)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   if (m_bReadOnlyMode)   //  some control-specific state
   {
      SetNotSupported();
   }
   else
   {
      m_iPropVal = newVal;   //  set property as normal
      SetModifiedFlag();
   }
}

Dit codevoorbeeld roept aan SetNotSupported als het m_bReadOnlyMode gegevenslid TRUE is. Als ONWAAR is, wordt de eigenschap ingesteld op de nieuwe waarde.

Foutcodes van een eigenschap retourneren

Als u wilt aangeven dat er een fout is opgetreden tijdens het ophalen of instellen van een eigenschap, gebruikt u de COleControl::ThrowError functie, die een SCODE (statuscode) als parameter gebruikt. U kunt een vooraf gedefinieerde SCODE gebruiken of een van uw eigen code definiëren. Zie Afhandelingsfouten in uw ActiveX-besturingselement in het artikel ActiveX-besturingselementen: Geavanceerde onderwerpen voor een lijst met vooraf gedefinieerde SCOD's en instructies voor het definiëren van aangepaste SCOD's.

Helperfuncties bestaan voor de meest voorkomende vooraf gedefinieerde SCOD's, zoals COleControl::SetNotSupported, COleControl::GetNotSupported en COleControl::SetNotPermitted.

Opmerking

ThrowError is bedoeld om alleen te worden gebruikt als een manier om een fout terug te geven vanuit de Get- of Set-functie van een eigenschap of een automatiseringsmethode. Dit zijn de enige keren dat de juiste uitzonderingshandler aanwezig is op de stack.

Zie COleControl::FireError en de sectie Afhandelingsfouten in uw ActiveX-besturingselement in het artikel ActiveX-besturingselementen: Geavanceerde onderwerpen voor meer informatie over het rapporteren van uitzonderingen in andere gebieden van de code.

Zie ook

MFC ActiveX-besturingselementen
MFC ActiveX-besturingselementen: eigenschappen
MFC ActiveX-controles: methoden
COleControl-klasse