Редактирование Control не обновляется с помощью Spin Control MFC - PullRequest
0 голосов
/ 30 сентября 2011

Я пытаюсь использовать элемент управления для редактирования вместе с элементом управления вращением с помощью MFC visual studio .net 2003. Я выполнил основные настройки для элемента управления вращением, такие как установка свойства " AutoBuddy " и SetBuddyInteger"свойство в True, так что элемент управления Spin работает в координации с элементом управления рядом с ним.В обработчике событий элемента управления Spin я сталкиваюсь с проблемой, когда пытаюсь вызвать функцию Invalidate ().Значение с плавающей точкой в ​​моем элементе редактирования не обновляется и остается равным нулю.Если я удаляю Invalidate (), то значение увеличивается, но моя функция рисования явно не обновляется.Ниже приведен код следующего кода:

void CMyDlg::OnSpinA(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
    // TODO: Add your control notification handler code here
    UpdateData();
    m_A = m_ASpinCtrl.GetPos(); // m_A is my edit control float value variable
    Invalidate(); // Invalidate is to be called to update my paint function to redraw the drawing
    UpdateData(false);
    *pResult = 0;
}

Я правильно выполнил порядок табуляции для двух элементов управления.

Есть предложения о том, где я ошибаюсь?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 30 сентября 2011

Если вы просто хотите получить вращающееся целое число, вам не нужно ничего переопределять.

Элемент управления вращением должен находиться рядом с элементом редактирования в порядке табуляции.С AutoBuddy это все, что вам нужно сделать.

2 голосов
/ 30 сентября 2011

m_A при возврате позиции сделает что-то странное и не вернет вам правильное значение.Попробуйте использовать указатель, чтобы получить свою позицию и значение, а затем выполните invalidate ().

{
        LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
        // TODO: Add your control notification handler code here
        UpdateData();

        CString tempStr;
        m_A += pNMUpDown->iDelta;
       tempStr.Format("%f",m_A);
        m_ACtrl.SetWindowText(tempStr); // Like a CEdit m_ACtrl to display your string

        Invalidate();
        UpdateData(false);
        *pResult = 0;
}

Это должно работать на отлично.Дайте мне знать, если у вас все еще будут проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...