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; }