Condividi tramite


Aggiunta di una proprietà al controllo (Esercitazione di ATL, parte 3)

IPolyCtl è l'interfaccia che contiene metodi personalizzati e le proprietà del controllo e si aggiungerà una proprietà su.

Per aggiungere una proprietà tramite Aggiunta guidata proprietà

  1. In Visualizzazione classi, espandi ramo polygon.

  2. Fare clic con il pulsante destro del mouse IPolyCtl.

  3. Scegliere dal menu di scelta rapida, fare clic Aggiungiquindi scegliere Aggiungere la proprietà.

    L'aggiunta guidata proprietà verrà visualizzato.

  4. Nell'elenco a discesa dei tipi di proprietà, SHORTselezionato.

  5. Tipo lati come nome proprietà.

  6. Scegliere Fine da completare aggiungere la proprietà.

Quando si aggiunge la proprietàinterfaccia, il MIDL (il programma che compila i file .idl) definisce un metodo Get per recuperare il valore e un metodo Put per impostare un nuovo valore. I metodi sono denominati anteponendo put_ e get_ il nome di proprietà.

L'aggiunta guidata proprietà vengono aggiunte le righe necessarie nel file IDL. Vengono aggiunti i prototipi di funzione Put e Get alla definizione della classe in PolyCtl.h e aggiungere un'implementazione vuota a PolyCtl.cpp. È possibile controllare questo aprendo PolyCtl.cpp e cercando le funzioni get_Sides e put_Sides.

Sebbene ottenere funzioni di base per impostare e recuperare la proprietà, un punto deve essere archiviata. Verrà creata una variabile per archiviare la proprietà e aggiornare pertanto le funzioni.

Per creare una variabile per archiviare la proprietà e aggiornare inserito e per ottenere i metodi

  1. In Esplora soluzioni, PolyCtl.h aperti e aggiungere la seguente riga dopo la definizione m_clrFillColor:

    short m_nSides;
    
  2. Impostare il valore predefinito m_nSides. Rendere la forma predefinita un triangolo aggiungere una riga al costruttore in PolyCtl.h:

    m_nSides = 3;
    
  3. Implementare i metodi Get e Put. Le dichiarazioni di funzione put_Sides e get_Sides sono state aggiunte a PolyCtl.h. Sostituire il codice in PolyCtl.cpp per get_Sides e in put_Sides con il codice seguente:

    STDMETHODIMP CPolyCtl::get_Sides(short* pVal)
    {
       *pVal = m_nSides;
    
       return S_OK;
    }
    
    STDMETHODIMP CPolyCtl::put_Sides(short newVal)
    {
       if (2 < newVal && newVal < 101)
       {
          m_nSides = newVal;
          return S_OK;
       }
       else
       {
          return Error(_T("Shape must have between 3 and 100 sides"));
       }
    }
    

Il metodo get_Sides restituisce il valore corrente della proprietà Sides tramite il puntatore pVal. Nel metodo put_Sides, il codice assicura l'utente sta impostando la proprietà Sides a un valore accettabile. Il minimo deve essere 2 e poiché una matrice di punti verrà utilizzata per ciascun lato, 100 è un limite ragionevole per un valore massimo.

A questo punto si dispone di una proprietà denominata Sides. Il passaggio successivo, verrà modificato il codice di disegno per utilizzarla.

Per tornare al passaggio 2 | Nel passaggio 4

Vedere anche

Riferimenti

Esercitazione relativa alla Libreria ATL (Active Template Library)