GetDlgItemInt(IDC_SEND_TIME)取不到值
void CEdit_Time_Send::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (((nChar >= 0x30)&&(nChar <= 0x39))||(nChar == 0x08))
{
int time = GetDlgItemInt(IDC_SEND_TIME);
if (GetDlgItemInt(IDC_SEND_TIME) < 9999)
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
}
}
为什么在这个类里面取不到编辑框控件里面的值?在下面这个类里就可以:
void CSerial_PortsDlg::OnBnClickedSendStart()
{
CString str;
GetDlgItemText(IDC_SEND_START,str);
if(!strcmp(str,"开始"))
{
int time = GetDlgItemInt(IDC_SEND_TIME);
if (time)
{
SetTimer(1,time,NULL);// 开始
SetDlgItemText(IDC_SEND_START,"停止");
}
else
{
KillTimer(1);// 停止
SetDlgItemText(IDC_SEND_START,"开始");
}
}
else
{
KillTimer(1);// 停止
SetDlgItemText(IDC_SEND_START,"开始");
}
}
应该如何解决呢?
[解决办法]
调用GetDlgItemInt(IDC_SEND_TIME)的地方不一样,一个是在编辑框类中,一个是在对话框类中。
第一个应该调用失败。
第一个修改成GetWindowText()得到CString,然后利用_ttoi()转成int类型即可。