Condividi tramite


Metodo CBasePropertyPage.OnReceiveMessage

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il OnReceiveMessage metodo viene chiamato quando la finestra di dialogo riceve un messaggio.

Sintassi

virtual INT_PTR OnReceiveMessage(
   HWND   hwnd,
   UINT   uMsg,
   WPARAM wParam,
   LPARAM lParam
);

Parametri

Hwnd

Handle nella finestra.

Umsg

Message.

wParam

Primo parametro del messaggio.

lParam

Secondo parametro del messaggio.

Valore restituito

Restituisce un valore booleano. La procedura di dialogo restituisce questo valore; per altre informazioni, vedere la documentazione di Platform SDK.

Commenti

L'implementazione della classe base chiama DefWindowProc. Eseguire l'override di questo metodo per gestire i messaggi correlati ai controlli della finestra di dialogo. Se il metodo di override non gestisce un messaggio specifico, deve chiamare il metodo di classe base.

Se l'utente modifica le proprietà tramite i controlli della finestra di dialogo, impostare il flag CBasePropertyPage::m_bDirty su TRUE. Chiamare quindi il metodo IPropertyPageSite::OnStatusChange nel puntatore CBasePropertyPage::m_pPageSite per informare il frame.

Esempio

L'esempio seguente risponde a un pulsante facendo clic aggiornando una variabile membro, che si presuppone che sia definita nella classe derivata. Questo esempio mostra anche una funzione helper per impostare lo stato sporco della pagina delle proprietà.

INT_PTR CMyProp::OnReceiveMessage(HWND hwnd,
  UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_COMMAND:
        if (LOWORD(wParam) == IDC_BUTTON1)
        {
            m_lNewVal = GetDlgItemInt(m_Dlg, IDC_EDIT1, 0, TRUE);
            SetDirty();
            return (INT_PTR)TRUE;
        }
        break;
    } // switch

    // Did not handle the message.
    return CBasePropertyPage::OnReceiveMessage(hwnd, uMsg, wParam, lParam);
}

// Helper function to update the dirty status.
void CMyProp::SetDirty()
{
    m_bDirty = TRUE;
    if (m_pPageSite)
    {
        m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY);
    }
}

Requisiti

Requisito Valore
Intestazione
Cprop.h (includere Streams.h)
Libreria
Strmbase.lib (build al dettaglio);
Strmbasd.lib (build di debug)

Vedi anche

Classe CBasePropertyPage