Dela via


MFC ActiveX-kontroller: Lägga till en annan anpassad egenskapssida

Ibland har en ActiveX-kontroll fler egenskaper än vad som rimligen får plats på en egenskapssida. I det här fallet kan du lägga till egenskapssidor i ActiveX-kontrollen för att visa dessa egenskaper.

I den här artikeln beskrivs hur du lägger till nya egenskapssidor i en ActiveX-kontroll som redan har minst en egenskapssida. Mer information om hur du lägger till lageregenskapssidor (teckensnitt, bild eller färg) finns i artikeln MFC ActiveX-kontroller: Använda lageregenskapssidor.

Följande procedurer använder ett ActiveX-exempelkontrollramverk som skapats av ActiveX-kontrollguiden. Därför är klassnamnen och identifierarna unika för det här exemplet.

Mer information om hur du använder egenskapssidor i en ActiveX-kontroll finns i följande artiklar:

Så här infogar du en ny mall för egenskapssidan i projektet

  1. När kontrollprojektet är öppet öppnar du Resursvy på projektarbetsytan.

  2. Högerklicka i Resursvy för att öppna snabbmenyn och klicka på Lägg till resurs.

  3. Expandera noden Dialog och välj IDD_OLE_PROPPAGE_SMALL.

  4. Klicka på Ny för att lägga till resursen i projektet.

  5. Välj den nya mallen för egenskapssidan för att uppdatera fönstret Egenskaper (i resursvyn).

  6. Ange ett nytt värde för ID-egenskapen . I det här exemplet används IDD_PROPPAGE_NEWPAGE.

  7. Klicka på Spara i verktygsfältet.

Så här associerar du den nya mallen med en klass

  1. Öppna klassvy.

  2. Högerklicka i klassvyn för att öppna snabbmenyn.

  3. På snabbmenyn klickar du på Lägg till och sedan på Lägg till klass.

    Då öppnas dialogrutan Lägg till klass .

  4. Dubbelklicka på MFC-klassmallen .

  5. I rutan Klassnamn i MFC-klassguiden skriver du ett namn för den nya dialogklassen. (I det här exemplet. CAddtlPropPage)

  6. Om du vill ändra filnamn klickar du på Ändra. Skriv in namnen på implementerings- och huvudfilerna eller acceptera standardnamnen.

  7. I rutan Basklass väljer du COlePropertyPage.

  8. I dialogrutan Dialog-ID väljer du IDD_PROPPAGE_NEWPAGE.

  9. Klicka på Slutför för att skapa klassen.

Om du vill ge kontrollens användare åtkomst till den här nya egenskapssidan gör du följande ändringar i kontrollens makroavsnitt för egenskapssidans ID :n (finns i kontrollimplementeringsfilen):

BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
   PROPPAGEID(CMyAxUIPropPage::guid)
   PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)

Observera att du måste öka den andra parametern för makrot BEGIN_PROPPAGEIDS (antalet egenskapssidor) från 1 till 2.

Du måste också ändra kontrollimplementeringsfilen (.CPP) för att inkludera headern (.H) för den nya egenskapssidans klass.

Nästa steg handlar om att skapa två nya strängresurser som ger ett typnamn och en undertext för den nya egenskapssidan.

Så här lägger du till nya strängresurser på en egenskapssida

  1. Öppna Resursvy när kontrollprojektet är öppet.

  2. Dubbelklicka på mappen Strängtabell och dubbelklicka sedan på den befintliga strängtabellresurs som du vill lägga till en sträng i.

    Då öppnas strängtabellen i ett fönster.

  3. Välj den tomma raden i slutet av strängtabellen och skriv texten eller bildtexten för strängen: till exempel "Ytterligare egenskapssida".

    Då öppnas sidan Strängegenskaper med rutorna Bildtext och ID . Bildtextrutan innehåller den sträng du skrev.

  4. I rutan ID väljer eller skriver du ett ID för strängen. Tryck på Retur när du är klar.

    I det här exemplet används IDS_SAMPLE_ADDPAGE för typnamnet på den nya egenskapssidan.

  5. Upprepa steg 3 och 4 med IDS_SAMPLE_ADDPPG_CAPTION för ID:t och "Ytterligare egenskapssida" för rubriken.

  6. I .CPP-filen för din nya egenskapssida (i det här exemplet CAddtlPropPage) ändra CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry så att IDS_SAMPLE_ADDPAGE skickas till AfxOleRegisterPropertyPageClass, som i följande exempel:

    BOOL CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry(BOOL bRegister)
    {
       if (bRegister)
          return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(),
             m_clsid, IDS_SAMPLE_ADDPAGE);
       else
          return AfxOleUnregisterClass(m_clsid, NULL);
    }
    
  7. Ändra konstruktorn CAddtlPropPage för så att IDS_SAMPLE_ADDPPG_CAPTION skickas till COlePropertyPage konstruktorn enligt följande:

    CAddtlPropPage::CAddtlPropPage() :
       COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION)
    {
    
    }
    

När du har gjort de nödvändiga ändringarna återskapar du projektet och använder Test Container för att testa den nya egenskapssidan. Mer information om hur du kommer åt testcontainern finns i Testa egenskaper och händelser med testcontainern .

Se även

MFC ActiveX-kontroller