7단계. 창 메시지 처리
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
CBasePropertyPage::OnReceiveMessage 메서드를 재정의하여 사용자 입력에 대한 응답으로 대화 상자 컨트롤을 업데이트합니다. 특정 메시지를 처리하지 않으면 부모 클래스에서 OnReceiveMessage 메서드를 호출합니다. 사용자가 속성을 변경할 때마다 다음을 수행합니다.
- 속성 페이지의 m_bDirty 변수를 TRUE로 설정합니다.
- PROPPAGESTATUS_DIRTY 플래그를 사용하여 속성 프레임의 IPropertyPageSite::OnStatusChange 메서드를 호출합니다. 이 플래그는 속성 프레임에 적용 단추를 사용하도록 설정해야 한다는 것을 알립니다. CBasePropertyPage::m_pPageSite 멤버는 IPropertyPageSite 인터페이스에 대한 포인터를 보유합니다.
이 단계를 간소화하기 위해 속성 페이지에 다음 도우미 함수를 추가할 수 있습니다.
private:
void SetDirty()
{
m_bDirty = TRUE;
if (m_pPageSite)
{
m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY);
}
}
다음 예제와 같이 사용자가 속성을 변경할 때마다 OnReceiveMessage 내에서 이 프라이빗 메서드를 호출합니다.
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);
}
이 예제의 속성 페이지에는 슬라이더 막대와 기본값으로 되돌리기 단추라는 두 개의 컨트롤이 있습니다. 사용자가 슬라이더 막대를 스크롤하면 속성 페이지에서 필터의 채도 값을 설정합니다. 사용자가 단추를 클릭하면 속성 페이지가 필터의 기본 채도 값을 복원합니다. 각 경우에서 m_lNewVal 현재 값을 보유하며 m_lVal 원래 값을 보유합니다. 사용자가 변경 내용을 커밋할 때까지 m_lVal 값이 업데이트되지 않습니다. 이 값은 사용자가 속성 프레임에서 확인 또는 적용 단추를 클릭할 때 발생합니다.
다음: 8단계. 속성 변경 내용을 적용합니다.
관련 항목