编辑控件不使用Spin Control MFC更新

时间:2011-09-30 10:44:33

标签: user-interface visual-c++ mfc

我正在尝试使用编辑控件以及使用MFC visual studio .net 2003的旋转控件。我已经执行了旋转控件的基本设置,例如设置“ AutoBuddy ”属性和“ SetBuddyInteger ”属性为True,以便Spin控件与其旁边的编辑控件协同工作。在我的Spin控件的事件处理程序中,当我尝试调用我的Invalidate()函数时,我遇到了问题。我的编辑控件中的浮点值不会更新并保持为零。如果我删除了Invalidate(),那么值会递增,但我的paint函数显然没有更新。下面给出了以下代码:

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

我已经正确执行了两个控件的Tab键顺序。

关于我哪里出错的任何建议?

提前致谢。

2 个答案:

答案 0 :(得分:3)

如果您只想拥有一个旋转整数,则不必覆盖任何内容。

旋转控件必须位于Tab键顺序中的编辑控件旁边。使用 AutoBuddy ,您只需要这样做。

答案 1 :(得分:2)

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

这应该非常好用。如果您仍然遇到任何问题,请告诉我。