步骤1 -添加控制变量 m_spinControl 用于Spin Control,其设置如下快照所示。

步骤2 - 为Edit控件添加控制变量m_editControl。

步骤3 - 为旋转按钮添加UDN_DELTAPOS事件的事件处理程序。

步骤4 - 如以下代码所示,更新OnInitDialog()。
BOOL CMFCSpinButtonDlg::OnInitDialog() { CDialogEx::OnInitDialog();//设置此对话框的图标。该框架会自动执行此操作当应用程序的主窗口不是对话框时 SetIcon(m_hIcon, TRUE); //Set big icon SetIcon(m_hIcon, FALSE); //Set small icon //TODO: Add extra initialization here m_spinControl.SetRange(0, 100); m_spinControl.SetPos(50); m_editControl.SetWindowText(L"50"); return TRUE; //return TRUE unless you set the focus to a control }
步骤5 -这是旋转控制事件的实现。
void CMFCSpinButtonDlg::OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {
LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
//TODO: Add your control notification handler code here
//声明一个指向 CSpinButtonCtrl 的指针;
CSpinButtonCtrl *Spinner;
//获取指向我们的旋转按钮的指针
Spinner = reinterpret_cast<CSpinButtonCtrl *>(GetDlgItem(IDC_SPIN1));
//找出是否是我们的旋转按钮发送了消息这个条件语句似乎没用,但那又如何呢?
if (pNMHDR -> hwndFrom == Spinner -> m_hWnd) {
//获取旋转按钮的当前值
int CurPos = pNMUpDown→iPos;
//将值转换为字符串
</span><span class="typ">CString</span><span class="pln"> str</span><span class="pun">;</span><span class="pln">
str</span><span class="pun">.</span><span class="typ">Format</span><span class="pun">(</span><span class="pln">L</span><span class="str">"%d"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">CurPos</span><span class="pun">);</span><span class="pln">
</span><span class="com">//将值显示到随附的编辑框中</span><span class="pln">
m_editControl</span><span class="pun">.</span><span class="typ">SetWindowText</span><span class="pun">(</span><span class="pln">str</span><span class="pun">);</span><span class="pln">
}
*pResult = 0;
}
步骤6 - 编译并执行上述代码后,您将看到以下输出。