各位高手,我在对话框中加入了一个CSpinButtonCtrl控件,关联了一个CSpinButtonCtrl类对象m_spinbtn,没有初始化该对象,因为我不会用其成员函数Create()中的第二个参数CRect。
我在该控件的响应函数OnDeltaposSpin1()中应该怎样编程,才能使我在按向上向下箭头时增加或减小该CSpinButtonCtrl控件的buddy窗口(是一个静态文本窗口,我已经设好了)中的数值呢?我增加了如下语句:
m_spinbtn.SetRange(0,255);
m_spinbtn.SetPos(100);
但运行时没有任何反应。请问是不是我初始化有问题,如果是的,那个CRect参数应怎样设置?或者,在响应函数里还要增加哪些语句?呵呵,问题可能比较简单,但我是初学者,还望各位高手详细指教!
我在该控件的响应函数OnDeltaposSpin1()中应该怎样编程,才能使我在按向上向下箭头时增加或减小该CSpinButtonCtrl控件的buddy窗口(是一个静态文本窗口,我已经设好了)中的数值呢?我增加了如下语句:
m_spinbtn.SetRange(0,255);
m_spinbtn.SetPos(100);
但运行时没有任何反应。请问是不是我初始化有问题,如果是的,那个CRect参数应怎样设置?或者,在响应函数里还要增加哪些语句?呵呵,问题可能比较简单,但我是初学者,还望各位高手详细指教!
解决方案 »
- missing ';' before identifier 'LRESULT'
- DirectX DXUT库中的那些控件(controls)是如何实现随窗口大小变化而保持大小恒定不变的呢?
- 1309==GetLastError()
- 关于DirectDraw的问题???
- 本地端口和远程端口有什么区别?
- 登陆对话框如何在一个对话框启动前启动?
- 在线等待:懂得StretchBlt函数的看看吧
- 编译错误,请大侠们指点(再线)
- 求大神知道怎么用读取iges格式文件
- 如何删除自己的已结过的贴子
- 求教:GetMessage和WaitForSingleObject函数内部的阻塞是如何实现的?
- 怎样让DLL不被卸载?
利用类向导在微调按钮上新建了一个类CMySpinButtonCtrl,基类为CSpinButtonCtrl,响应了它的OnLButtonDown函数,并添加代码如下:
void CMySpinButtonCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
int nRow;
int nUpper;
CMySpinButtonCtrl::GetRange(nRow,nUpper);
CString strNum;
CMySpinButtonCtrl::GetBuddy()->GetWindowText(strNum);
CRect Rect;
CMySpinButtonCtrl::GetWindowRect (&Rect);
int pos = atoi(strNum);
if(point.y <((Rect.bottom+Rect.top)/2))
{
CMySpinButtonCtrl::SetPos(pos-1);
}
else
{
CMySpinButtonCtrl::SetPos(pos + 1);
}
CSpinButtonCtrl::OnLButtonDown(nFlags, point);
}
但点击仍没有任何反应,请高手继续指点!
前面我讲过我将CSpinButtonCtrl控件的buddy窗口设为一个静态文本控件,没有反应。后来我将此控件换成了Edit控件,还是没有反应。真的不知道问题出在哪了!?
我按照你的建议,删去了派生类及响应消息,选择了“Set Buddy Integer”,然后在Play按钮的消息响应函数OnPlay()中添加了如下代码(m_spinbtn是与CSpinButtonCtrl控件相关联的一个CSpinButtonCtrl类对象):
m_spinbtn.SetBuddy(GetDlgItem(IDC_TEMPO));
m_spinbtn.SetRange(0,255);
m_spinbtn.SetPos(100);
运行后,发现第一次点击向上箭头时数字变101,第一次点向下箭头时数字变99,但再次点击箭头数字就没有变化了。
然后我将第三条语句改为:
m_spinbtn.SetPos(m_Midi.GetTempo());(参数为得到MIDI文件的节拍数函数),再运行。
此时,当点击Play按钮时显示出正常的节拍数(当时那个节拍是135),但当第一次点击向上箭头时数字又变101,第一次点向下箭头时数字变99,并不是在135的基础上加减1.而且再次点击箭头数字就没有变化了。我不知道问题出在哪了,请高手指点!!
m_spinbtn.SetBuddy(GetDlgItem(IDC_TEMPO));
m_spinbtn.SetRange(0,255);
m_spinbtn.SetPos(m_Midi.GetTempo());
移到了OnDeltaposSpin1()函数中,但点击上下箭头时数字仍只能改变一次,而且有时改变的幅度没有规律。
呵,小弟我茫然了!!
我把这个问题单独拿出来做试验,发现你讲的完全可行。现已修改源程序,按微调按钮可以改变数字了!再次表示感谢!!!
程序还有一些问题,但涉及到其他方面,我再摸索一下,不懂再提问!!