今天我用MFC编程:在对话框中添加编辑框IDC_EDIT及微调按钮IDC_SPIN,调用绑定函数SetBuddy()将这两个控件绑定后,我发现,每次单击,增量为1,查看所有的函数,却没有发现可设置增量为0.1,请问各位高手,我该怎么办?谢谢!!!

解决方案 »

  1.   

    给IDC_SPIN1添加UDN_DELTAPOS消息映射
    OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;

    TCHAR szText[MAX_INPUT];
    GetDlgItemText(IDC_EDIT,szText,MAX_INPUT);
    sprintf(szText,"%.1f",atof(szText)+ 0.1 * pNMUpDown->iDelta);
    SetDlgItemText(IDC_EDIT,szText);
    *pResult = 1;//prevent the change 
    }
      

  2.   

    自定义一个CSliderCtrl类,增减0.1在这个类中转换成乘以10就可以了
      

  3.   

    想了一个小时出结果
    在对话框添加微调按钮IDC_MYSPIN与编辑框控件IDC_MYEDIT,为编辑框控件关联一个CString型的变量m_myedit,在CMyDlg::OnInitDialog()中添加代码:
    m_myedit="8.7";      //初始化编辑框控件
    UpdateData(FALSE); 
    为控件IDC_MYSPIN添加事件UDN_DELTAPOS的响应函数OnDeltaposMyspin()编辑代码如下:
    void CMyDlg::OnDeltaposMyspin(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);  //若人工修改编辑框中的数值,这句就起作用
    double f=atof(m_myedit);
    f-=0.1*pNMUpDown->iDelta;
    m_myedit.Format("%.1f",f);
    UpdateData(FALSE);
    *pResult = 0;
    }