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

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 Visualizzazione classi espandere il Polygon ramo .

  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 procedura guidata 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 i Get metodi e Put . Le dichiarazioni di get_Sides funzione 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

Esercitazione