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 @   天子骄龙  阅读(266)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2020-08-07 C++内联函数
点击右上角即可分享
微信分享提示

目录导航