Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
[Funktionen som är associerad med den här sidan, DirectShow, är en äldre funktion. Det har ersatts av MediaPlayer, IMFMediaEngineoch Audio / Video Capture i Media Foundation. Dessa funktioner har optimerats för Windows 10 och Windows 11. Microsoft rekommenderar starkt att ny kod använder MediaPlayer, IMFMediaEngine och Audio/Video Capture i Media Foundation i stället för DirectShow, när det är möjligt. Microsoft föreslår att befintlig kod som använder äldre API:er skrivs om för att använda de nya API:erna om möjligt.]
Åsidosätt metoden CBasePropertyPage::OnReceiveMessage för att uppdatera dialogrutekontrollerna i respons på användarindata. Om du inte hanterar ett visst meddelande anropar du metoden OnReceiveMessage i den överordnade klassen. När användaren ändrar en egenskap gör du följande:
- Ange m_bDirty-variabeln för egenskapssidan till TRUE.
- Anropa metoden IPropertyPageSite::OnStatusChange för egenskapsramen med flaggan PROPPAGESTATUS_DIRTY. Den här flaggan informerar egenskapsramen om att den ska aktivera knappen Använd. CBasePropertyPage::m_pPageSite-variabeln har en pekare till IPropertyPageSite--gränssnittet.
För att förenkla det här steget kan du lägga till följande hjälpfunktion på egenskapssidan:
private:
void SetDirty()
{
m_bDirty = TRUE;
if (m_pPageSite)
{
m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY);
}
}
Anropa den här privata metoden i OnReceiveMessage när en användaråtgärd ändrar en egenskap, som du ser i följande exempel:
BOOL CGrayProp::OnReceiveMessage(HWND hwnd,
UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_COMMAND:
if (LOWORD(wParam) == IDC_DEFAULT)
{
// User clicked the 'Revert to Default' button.
m_lNewVal = SATURATION_DEFAULT;
m_pGray->SetSaturation(m_lNewVal);
// Update the slider control.
SendDlgItemMessage(m_Dlg, IDC_SLIDER1, TBM_SETPOS, 1,
m_lNewVal);
SetDirty();
return (LRESULT) 1;
}
break;
case WM_HSCROLL:
{
// User moved the slider.
switch(LOWORD(wParam))
{
case TB_PAGEDOWN:
case SB_THUMBTRACK:
case TB_PAGEUP:
m_lNewVal = SendDlgItemMessage(m_Dlg, IDC_SLIDER1,
TBM_GETPOS, 0, 0);
m_pGray->SetSaturation(m_lNewVal);
SetDirty();
}
return (LRESULT) 1;
}
} // Switch.
// Let the parent class handle the message.
return CBasePropertyPage::OnReceiveMessage(hwnd,uMsg,wParam,lParam);
}
Egenskapssidan i det här exemplet har två kontroller: ett skjutreglage och en Återställ till standard-knapp. Om användaren rullar skjutreglaget anger egenskapssidan mättnadsvärdet i filtret. Om användaren klickar på knappen återställer egenskapssidan filtrets standardmättnadsvärde. I varje fall innehåller m_lNewVal det aktuella värdet och m_lVal innehåller det ursprungliga värdet. Värdet för m_lVal uppdateras inte förrän användaren checkar in ändringen, vilket händer när användaren klickar på OK- eller knappen Använd i egenskapsramen.
Nästa: steg 8. Tillämpa egenskapsändringar.
Relaterade ämnen