Condividi tramite


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

Annotazioni

La libreria di modelli attivi (ATL) continua a essere supportata. Tuttavia, non aggiungiamo più funzionalità né aggiorniamo la documentazione.

IPolyCtl è l'interfaccia che contiene i metodi e le proprietà personalizzati del controllo e vi verrà aggiunta una proprietà.

Per aggiungere le definizioni delle proprietà al progetto

  1. In Class View, espandere il ramo Polygon.

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

  3. Scegliere Aggiungi dal menu di scelta rapida e quindi fare clic su Aggiungi proprietà. Verrà visualizzata la finestra di dialogo Aggiungi proprietà.

  4. Digitare Sides come Nome Proprietà.

  5. Nell'elenco a discesa Tipo di proprietà, Selezionare short.

  6. Fare clic su OK per completare l'aggiunta della proprietà.

  7. Da Esplora soluzioni aprire Polygon.idl e sostituire le righe seguenti alla fine dell'interfacciaIPolyCtl : IDispatch:

    short get_Sides();
    void set_Sides(short value);
    

    con

    [propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal);
    [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
    
  8. Da Esplora soluzioni aprire PolyCtl.h e aggiungere le righe seguenti dopo la definizione di m_clrFillColor:

    short m_nSides;
    STDMETHOD(get_Sides)(short* pval);
    STDMETHOD(put_Sides)(short newval);
    

Anche se ora si dispone di funzioni scheletro per impostare e recuperare la proprietà e una variabile per archiviare la proprietà, è necessario implementare le funzioni di conseguenza.

Per aggiornare i metodi get e put

  1. Impostare il valore predefinito di m_nSides. Impostare la forma predefinita su un triangolo aggiungendo una riga al costruttore in PolyCtl.h:

    m_nSides = 3;
    
  2. Implementare il metodo Get e il metodo Put. Le dichiarazioni di funzione get_Sides e put_Sides sono state aggiunte a PolyCtl.h. Aggiungere ora il codice per get_Sides e put_Sides a PolyCtl.cpp con quanto segue:

    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 get_Sides metodo restituisce il valore corrente della Sides proprietà tramite il pVal puntatore. put_Sides Nel metodo il codice garantisce che l'utente stia impostando la Sides proprietà su un valore accettabile. Il valore minimo deve essere 3 e, poiché per ogni lato verrà usata una matrice di punti, 100 è un limite ragionevole per un valore massimo.

È ora disponibile una proprietà denominata Sides. Nel passaggio successivo si modificherà il codice di disegno per usarlo.

Tornare al passaggio 2 | al passaggio 4

Vedi anche

Tutorial