MFC - Gerenciando o Controle de Atualização
Step 1 - Adicionar uma variável de controle m_spinControl para controle de rotação com as configurações conforme mostrado no instantâneo a seguir.
Step 2 - Adicione a variável de controle m_editControl para controle de edição.
Step 3 - Adicione o manipulador de eventos para o evento UDN_DELTAPOS para o botão de rotação.
Step 4 - Atualize OnInitDialog () conforme mostrado no código a seguir.
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
}
Step 5 - Aqui está a implementação do evento de controle de rotação.
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;
}
Step 6 - Quando o código acima for compilado e executado, você verá a seguinte saída.