我有一个对话框,上面有一个slider控件和一个edit控件,通过滑动slider上面的滑块来改变edit控件中显示的值(变量是CString类型的),这个没有问题。我现在想在另一个类中使用这个edit控件当前的值,为什么传递过来的总是初始值(我为edit控件设了一个初始值,也就是说,在改变slider之前显示在edit控件中的值)?下面是一些相关的代码// 对话框中
m_edit = 27; //构造函数中设初始值
// 通过拖动滑块来改变edit中显示的值
void CPageDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CSliderCtrl *slider = (CSliderCtrl*)pScrollBar;
m_edit = slider->GetPos();
UpdateData(FALSE); CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
// 将要被另一个类调用的函数
int CPageDlg::Threshold()
{
return m_edit;
}
// 另一个类中
CPageDlg page; // 为类CPageDlg创建一个对象page
// 调用Threshold函数,m是int类型的变量
if (m > page.Threshold()) // 问题是为什么page.Threshold()总是27,它不应该是当前edit中显示的数据么?
{
........
}原因我基本上已经知道,我需要在调用它之前UpdateData(TRUE)一下,但是由于这个对话框中不止一个控件,所以UpdateData
会引起breakpoint,实在不知道要如何解决这个问题,请高手帮帮忙啊!我写了一个简单的测试程序,不知道有没有高手愿意提供邮箱帮我看一看。真的谢谢了!
m_edit = 27; //构造函数中设初始值
// 通过拖动滑块来改变edit中显示的值
void CPageDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CSliderCtrl *slider = (CSliderCtrl*)pScrollBar;
m_edit = slider->GetPos();
UpdateData(FALSE); CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
// 将要被另一个类调用的函数
int CPageDlg::Threshold()
{
return m_edit;
}
// 另一个类中
CPageDlg page; // 为类CPageDlg创建一个对象page
// 调用Threshold函数,m是int类型的变量
if (m > page.Threshold()) // 问题是为什么page.Threshold()总是27,它不应该是当前edit中显示的数据么?
{
........
}原因我基本上已经知道,我需要在调用它之前UpdateData(TRUE)一下,但是由于这个对话框中不止一个控件,所以UpdateData
会引起breakpoint,实在不知道要如何解决这个问题,请高手帮帮忙啊!我写了一个简单的测试程序,不知道有没有高手愿意提供邮箱帮我看一看。真的谢谢了!
CString str;
page.GetDlgItem(edit_it)->GetWindowText(str);
==========
你这个对话框类有对应的实际对话框吗?
然后非常感谢你的热心,邮件已经发给你了。
UpdateData(FALSE),我是用来将m_edit的值显示到edit控件中,这个我已经实现了。我现在希望在另一个类中通过调用Threshold函数来传递m_edit的值,问题是传递过来的总是初始值27.