MFC - 管理升降控件



步骤 1 − 添加控件变量 m_spinControl,用于设置自旋控件,如下快照所示。

Managing Updown Control

步骤 2 − 添加用于编辑控件的控件变量 m_editControl。

m_editControl

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

Managing Updown Control

步骤 4 − 按以下代码更新 OnInitDialog()。

BOOL CMFCSpinButtonDlg::OnInitDialog() {
   CDialogEx::OnInitDialog();

   // Set the icon for this dialog. The framework does this automatically
   // when the application's main window is not a dialog
   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
   // Declare a pointer to a CSpinButtonCtrl;
   CSpinButtonCtrl *Spinner;
   // Get a pointer to our spin button
   Spinner = reinterpret_cast<CSpinButtonCtrl *>(GetDlgItem(IDC_SPIN1));
   // Found out if it is our spin button that sent the message
   // This conditional statement appears useless but so what?
   if (pNMHDR -> hwndFrom == Spinner -> m_hWnd) {
      // Get the current value of the spin button
      int CurPos = pNMUpDown→iPos;
      // Convert the value to a string

      CString str;
      str.Format(L"%d", CurPos);
      // Display the value into the accompanying edit box
      m_editControl.SetWindowText(str);
   }
   *pResult = 0;
}

步骤 6 − 编译并执行以上代码时,您将看到以下输出。

Managing Updown Control
mfc_windows_controls.htm
广告