Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med egenskapssidor kan en ActiveX-kontrollanvändare visa och ändra ActiveX-kontrollegenskaper. Dessa egenskaper nås genom att anropa en dialogruta för kontrollegenskaper, som innehåller en eller flera egenskapssidor som tillhandahåller ett anpassat grafiskt gränssnitt för att visa och redigera kontrollegenskaperna.
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.
ActiveX-kontrollegenskapssidor visas på två sätt:
När kontrollens egenskapsverb (OLEIVERB_PROPERTIES) anropas öppnar kontrollen en dialogruta för en modal egenskap som innehåller kontrollens egenskapssidor.
Containern kan visa en egen lägeslös dialogruta som visar egenskapssidorna för den valda kontrollen.
Dialogrutan Egenskaper (illustreras i följande bild) består av ett område för att visa den aktuella egenskapssidan, flikar för att växla mellan egenskapssidor och en samling knappar som utför vanliga uppgifter, till exempel att stänga dialogrutan egenskapssida, avbryta eventuella ändringar som gjorts eller omedelbart tillämpa ändringar i ActiveX-kontrollen.
Dialogrutan Egenskaper
Den här artikeln beskriver ämnen som rör användning av egenskapssidor i en ActiveX-kontroll. Dessa inkluderar:
Mer information om hur du använder egenskapssidor i en ActiveX-kontroll finns i följande artiklar:
Information om hur du använder egenskapsblad i ett annat MFC-program än en ActiveX-kontroll finns i Egenskapsblad.
Implementera standardegenskapssidan
Om du använder ActiveX-kontrollguiden för att skapa kontrollprojektet tillhandahåller Guiden ActiveX-kontroll en standardklass för egenskapssidan för kontrollen som härleds från COlePropertyPage-klassen. Till en början är den här egenskapssidan tom, men du kan lägga till valfri dialogrutekontroll eller uppsättning kontroller i den. Eftersom ActiveX-kontrollguiden endast skapar en egenskapssidaklass som standard måste ytterligare egenskapssidasklasser (även härledda från COlePropertyPage) skapas med hjälp av klassvyn. Mer information om den här proceduren finns i MFC ActiveX-kontroller: Lägga till en annan anpassad egenskapssida.
Att implementera en egenskapssida (i det här fallet standardvärdet) är en process i tre steg:
Så här implementerar du en egenskapssida
Lägg till en
COlePropertyPage-derived-klass i kontrollprojektet. Om projektet skapades med hjälp av ActiveX-kontrollguiden (som i det här fallet) finns standardegenskapssidans klass redan.Använd dialogredigeraren för att lägga till kontroller i mallen för egenskapssidan.
Anpassa
DoDataExchange-funktionen i denCOlePropertyPage-härledda klassen för att utbyta värden mellan egenskapssidans kontroll och ActiveX-kontrollen.
I följande procedurer används till exempel en enkel kontroll (med namnet "Sample"). Exemplet skapades med hjälp av ActiveX-kontrollguiden och innehåller endast den standardegenskapen Rubrik.
Lägga till kontroller på en egenskapssida
Så här lägger du till kontroller på en egenskapssida
Öppna Resursvy när kontrollprojektet är öppet.
Dubbelklicka på katalogikonen Dialog .
Öppna dialogrutan IDD_PROPPAGE_SAMPLE.
ActiveX-kontrollguiden lägger till namnet på projektet i slutet av dialog-ID:t, i det här fallet Exempel.
Dra och släpp den markerade kontrollen från verktygslådan till dialogruteområdet.
I det här exemplet räcker det med textetikettkontrollen "Caption :" och en redigeringsrutekontroll med en IDC_CAPTION identifierare.
Spara ändringarna genom att klicka på Spara i verktygsfältet.
Nu när användargränssnittet har ändrats måste du länka redigeringsrutan med egenskapen Bildtext. Detta görs i följande avsnitt genom att redigera CSamplePropPage::DoDataExchange funktionen.
Anpassa DoDataExchange-funktionen
Med funktionen CWnd::D oDataExchange kan du länka egenskapssidans värden med de faktiska värdena för egenskaperna i kontrollen. Om du vill upprätta länkar måste du mappa lämpliga egenskapssidafält till respektive kontrollegenskaper.
Dessa mappningar implementeras med hjälp av egenskapssidan DDP_ funktioner. De DDP_ funktionerna fungerar som de DDX_ funktioner som används i MFC-standarddialogrutor, med ett undantag. Förutom referensen till en medlemsvariabel tar DDP_ funktioner namnet på kontrollegenskapen. Följande är en typisk post i DoDataExchange-funktionen för en egenskapssida.
DDP_Text(pDX, IDC_CAPTION, m_caption, _T("Caption"));
Den här funktionen associerar egenskapssidans medlemsvariabel m_caption med bildtext, med hjälp av DDP_TEXT-funktionen.
När du har infogat egenskapssidans kontroll måste du upprätta en länk mellan egenskapssidans kontroll, IDC_CAPTION och den faktiska kontrollegenskapen, Bildtext, med hjälp av funktionen enligt beskrivningen DDP_Text ovan.
Egenskapssidor är tillgängliga för andra dialogkontrolltyper, till exempel kryssrutor, alternativknappar och listrutor. Tabellen nedan visar hela uppsättningen egenskapssida DDP_ funktioner och deras syften:
Funktioner för egenskapssida
| Funktionsnamn | Använd den här funktionen för att länka |
|---|---|
DDP_CBIndex |
Den valda strängens index i en kombinationsruta med en kontrollegenskap. |
DDP_CBString |
Den valda strängen i en kombinationsruta som har en kontrollattribut. Den valda strängen kan börja med samma bokstäver som egenskapens värde men behöver inte matcha den helt. |
DDP_CBStringExact |
Den valda strängen i en kombinationsruta som har en kontrollattribut. Den markerade strängen och egenskapens strängvärde måste matcha exakt. |
DDP_Check |
En kryssruta med en kontrollegenskap. |
DDP_LBIndex |
Den valda strängens index i en listruta med en kontrollegenskap. |
DDP_LBString |
Den markerade strängen i en listruta med en kontrollegenskap. Den valda strängen kan börja med samma bokstäver som egenskapens värde men behöver inte matcha den helt. |
DDP_LBStringExact |
Den markerade strängen i en listruta med en kontrollegenskap. Den markerade strängen och egenskapens strängvärde måste matcha exakt. |
DDP_Radio |
En alternativknapp med en styrningsegenskap. |
DDP_Text |
Text med en kontrollattribut. |