【MFC 】关于对话框中的OnVScroll() 和 OnHScroll

时间:2023-03-10 07:06:35
【MFC 】关于对话框中的OnVScroll() 和 OnHScroll
    对话框中的滑块,微调控件都会向OnVScroll() 和OnHScroll()发送消息。
   所以,要想对滑块,微调控件有效控制,就要对这两个函数(改写对话框的这两个函数)进行控制。
    如:
///////////////////////////////////////////////////////////////////////////////////////////////////
// 控制两个独立的滑块
///////////////////////////////////////////////////////////////////////////////////////////////////
voidCex08aDialog::OnHScroll(UINTnSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO:在此添加消息处理程序代码和/或调用默认值
//Slider
CSliderCtrl* pSlider =(CSliderCtrl*)pScrollBar;
CString strText; switch(pSlider->GetDlgCtrlID() )
{
//Slider1
case IDC_SLIDER1:
strText.Format( _T("%d"), pSlider->GetPos() );
SetDlgItemText( IDC_STATIC_SLIDER1, strText );
break;
//Slider2
case IDC_SLIDER2:
strText.Format( _T("%3.1f"),dValue[pSlider->GetPos()] );
SetDlgItemText( IDC_STATIC_SLIDER2, strText );
break;
//dValue[6]= {1.5, 3.0, 4.5, 6.0, 7.5,8.0};
}
CDialog::OnHScroll(nSBCode,nPos, pScrollBar);
} ///////////////////////////////////////////////////////////////////////////////////////////////////
// 控制微调
///////////////////////////////////////////////////////////////////////////////////////////////////
voidCex08aDialog::OnVScroll(UINTnSBCode, UINT nPos, CScrollBar* pScrollBar)
{
//TODO: 在此添加消息处理程序代码和/或调用默认值
if( nSBCode== SB_ENDSCROLL )
{
return;
}
//SpinButton
if(pScrollBar->GetDlgCtrlID() == IDC_SPIN1 )
{
CString strValue;
strValue.Format( _T("%3.1f"), (double)nPos / 10.0 );
//((CSpinButtonCtrl*)pScrollBar)->GetBuddy()->SetWindowTextW(strValue );
CEdit* pEdit =(CEdit*)((CSpinButtonCtrl*)pScrollBar)->GetBuddy();
pEdit->SetWindowTextW( strValue );
} CDialog::OnVScroll(nSBCode,nPos, pScrollBar);
}