if(GetDlgCtrlID()==IDC_SPIN_D1)
{……m_spin_d1=(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_D1);……}
if(GetDlgCtrlID()==IDC_SPIN_D2)
{……m_spin_d2=(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_D2);……}
……
……
……
if(GetDlgCtrlID()==IDC_SPIN_D10)
{……m_spin_d10=(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_D10);……}类似这一串的语句怎么用循环语句实现呢?
显然不能用数组实现的,要是比10更多怎么办的呢?
{……m_spin_d1=(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_D1);……}
if(GetDlgCtrlID()==IDC_SPIN_D2)
{……m_spin_d2=(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_D2);……}
……
……
……
if(GetDlgCtrlID()==IDC_SPIN_D10)
{……m_spin_d10=(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_D10);……}类似这一串的语句怎么用循环语句实现呢?
显然不能用数组实现的,要是比10更多怎么办的呢?
你也不用一个一个判断啊
判断是IDC_SPIN_D1到IDC_SPIN_D10范围并连续就可以
m_spin = new CSpinObj[10];
int nID = GetDlgCtrlID();
if((nID>=IDC_SPIN_D1)||nID<=IDC_SPIN_D10))
m_spin[nID-IDC_SPIN_D1] = (CSpinButtonCtrl*)GetDlgItem(nID)
#define IDC_SPIN_D1 IDC_NUM+1
...
#define IDC_SPIN_D10 IDC_NUM+9
非常感谢你的回答!
但IDC_SPIN_D1到IDC_SPIN_D10 都是控件的ID,怎么个用数组法呢,烦请示例!不至于把资源号那些整数拿出来吧,那样程序以后就读不懂了。况且不是要求每个if都执行,只执行其中的一个而矣。希望能有办法将字符串转换成变量名就好了。
pSpinCtrl[0] = &m_spin_d1;
pSpinCtrl[1] = &m_spin_d2;
pSpinCtrl[2] = &m_spin_d3;//...
for(int i=0;i<nResCount;i++)
{
pSpinCtrl[i] = (CSpinButtonCtrl*)GetDlgItem(nResID[i]);
}
用个for循环就可以了
for(int i=0;i<10;i++)
{
m_spin[i] = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_D1+i);
}