MFC-Spin数值调节控件

 一般与编辑框组合使用

 

属性

1.     

true:要改变的是数值类型

false:要改变的是非数值类型

 

2.

 true:响应键盘上的箭头键 

 

3.

 值是否循环

 

4.

嵌入编辑框:Unattached     取消嵌入

      left     左

      right   右

 

 

    myspin.SetRange32(0, 20);    //调节的范围
    /*
    myspin是控件变量
    参数int类型
    SetRange参数short类型
    
    */
    
    myspin.SetBase(10); //十进制
    myspin.SetBuddy(GetDlgItem(IDC_EDIT1));    //设置关联的编辑框
    /*
    CWnd* SetBuddy(CWnd* pWndBuddy);
    
    返回值:先前伙伴窗口的指针
    
    */

    myspin.SetPos(10);//设置当前值

    int n1 = myspin.GetPos();  //获取当前值
    int n2 = myspin.GetRange();//获取最大值
    int n3 = 100000;
    myspin.GetRange(n2, n3);//获取最小值和最大值

 

 

消息

UDN_DELTAPOS值即将更改时 

void CMFCtestDlg::OnDeltaposSpin2(NMHDR* pNMHDR, LRESULT* pResult)
/*
参数1:NMHDR结构指针
typedef struct tagNMHDR {
     HWND hwndFrom;  //控件的句柄
     UINT idFrom;  //控件的ID号
     UINT code; //通知代码,即消息类型(UDN_DELTAPOS)
 } NMHDR;
  
*/
{
    LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
    // TODO: 在此添加控件通知处理程序代码

    HWND hwnd= ::GetDlgItem(m_hWnd, IDC_SPIN2);  
    if ((pNMHDR->idFrom == IDC_SPIN2) && (pNMHDR->code == UDN_DELTAPOS) && (pNMHDR->hwndFrom == hwnd)) {
        AfxMessageBox(_T("消息成功"));
    }



    *pResult = 0;
}

 

void CMFCtestDlg::OnDeltaposSpin2(NMHDR* pNMHDR, LRESULT* pResult)
{
    LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
    /*
    NM_UPDOWN结构:
    typedef struct _NM_UPDOWN {
2     NMHDR hdr;  //NMHDR (包含参数1)
3     int   iPos;  //该控件当前值
4     int   iDelta;  //用该值确认是往上加(正直),还是往下减(负值)【变化值】
5 } NMUPDOWN, FAR *LPNMUPDOWN;
    
    */


    // TODO: 在此添加控件通知处理程序代码

    if (pNMUpDown->iDelta>0) {
        AfxMessageBox(_T("数值增加了"));
    }



    *pResult = 0;
}

 

 

 

 

 

 

 

 

 

 

posted @ 2023-08-07 20:47  天子骄龙  阅读(337)  评论(0)    收藏  举报