我正在尝试使用编辑控件以及使用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键顺序。
关于我哪里出错的任何建议?
提前致谢。
答案 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;
}
这应该非常好用。如果您仍然遇到任何问题,请告诉我。