Condividi tramite


Uso dell'annotazione mappa valori

Per creare una mappa dei valori

  1. Creare una stringa di mapping.

    Una stringa di mapping è un elenco dei valori numerici di un controllo corrispondenti a una stringa leggibile in Unicode. Inizia con "A:" seguito da un numero che indica il tipo di indice usato. Sono supportati solo gli indici di immagine; pertanto il tipo di indice è sempre 0.

    La stringa è seguita da coppie :index:result. L'indice è un numero che rappresenta un indice di immagine per un List-View o una visualizzazione albero o il valore per un controllo dispositivo di scorrimento.

    Il valore risultante è un numero ottenuto quando si esegue il mapping della proprietà Role o State per un controllo di visualizzazione elenco o struttura ad albero. Tali numeri sono espressi in decimali o esadecimali con un prefisso "0x".

    La stringa di mapping viene sempre terminata con un punto finale (":").

    Di seguito è riportato un esempio di una mappa di annotazione per le proprietà State e Role di una casella di controllo in una visualizzazione elenco o un controllo visualizzazione albero. Nella visualizzazione sono presenti due elementi che rappresentano le caselle di controllo e ogni immagine corrisponde allo stato selezionato e deselezionato.

    LPCWSTR g_ListOrTreeStateMap = 
    L"A:0"     // Index type; always 0. !
    L":0:0x00" // Image 0 is normal !
    L":1:0x10" // Image 1 is checked - STATE_SYSTEM_CHECKED (0x10) !
    L":";
    
    LPCWSTR g_ListOrTreeRoleMap = 
    L"A:0"     // Index type; always 0. !
    L":0:0x2C" // Image 0 is a check box - ROLE_SYSTEM_CHECKBUTTON
    (0x2c) !
    L":1:0x2C" // image 1 is also a check box !
    L":";
    

    Per i valori di ruolo e stato validi, vedere Ruoli oggetto e Costanti stato oggetto.

    Il valore dell'indice può essere negativo quando si esegue il mapping delle proprietà per un controllo dispositivo di scorrimento.

    Quando si esegue il mapping di una proprietà Value o Description, il risultato è una stringa. Le stringhe non sono virgolette e i due punti fungono da delimitatori.

    Per altre informazioni, vedere Formato mappa annotazione.

  2. Creare la gestione annotazioni e ottenere un puntatore all'interfacciaIAccPropServices.

    Di seguito è riportato un esempio di come creare la gestione annotazioni.

    IAccPropServices * pAccPropSvc = NULL;
    HRESULT hr = CoCreateInstance(CLSID_AccPropServices, NULL,
    CLSCTX_SERVER, IID_IAccPropServices, (void**) & pAccPropSvc));
    
    
  3. Collegare la stringa di mapping al controllo.

    Chiamare IAccPropServices::SetHwndPropStr, passando HWND del controllo e un puntatore alla stringa di mapping.

    Il parametro IdProp sarà uno dei seguenti.

    Parametro Utilizzo
    MSAAPROPID_ROLEMAP Per impostare una mappa dei ruoli per i controlli visualizzazione elenco o visualizzazione albero.
    MSAAPROPID_STATEMAP Per impostare una mappa dello stato per i controlli visualizzazione elenco o visualizzazione albero.
    PROPID_ACC_DESCRIPTIONMAP Per impostare una mappa di descrizione per la visualizzazione elenco o le visualizzazioni albero.
    MSAAPROPID_VALUEMAP Per impostare una mappa dei valori nei controlli dispositivo di scorrimento.

     

  4. Pulire.

    Prima di eliminare tutti i controlli annotati della mappa dei valori, ad esempio quando si gestisce WM_DESTROY, è necessario cancellare le proprietà registrate in precedenza e rilasciare la gestione annotazioni.

    A tale scopo, chiamare IAccPropServices::ClearHwndProps come appropriato e rilasciare il puntatore a IAccPropServices.

Per il codice di esempio, vedere Esempio di annotazione mappa valori.