VS2008 MFC编程,对话框显示多个图片和图标,运行2个小时,图片和图标不见了,请指教。谢谢。
3xcom 2012-04-09 09:32:45 我在VS2008中,用MFC编程,一个对话框显示多个BMP图片和ICON图标,程序运行2个小时左右,图片和图标都不见了,其他串口通讯和浮点显示没问题。
请指点,代码如下:
void CSlgoNewStationDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
static int SyringeNum=0;
switch(nIDEvent)
{
case 1:
{
SyringeNum++;
if(SyringeNum>20)
SyringeNum=0;
// m_animIcon1.ShowNextImage();
static int i=0;
// if(SystemStatus==run)
i++;
if(i>=4)
i=0;
if(AlarmState[0]==run)
m_ctrlStateFlag1.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag1.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[1]==run)
m_ctrlStateFlag2.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag2.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[2]==run)
m_ctrlStateFlag3.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag3.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[3]==run)
m_ctrlStateFlag4.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag4.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[4]==run)
m_ctrlStateFlag5.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag5.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[5]==run)
m_ctrlStateFlag6.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag6.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[6]==run)
m_ctrlStateFlag7.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag7.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[7]==run)
m_ctrlStateFlag8.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag8.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[8]==run)
m_ctrlStateFlag9.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag9.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[9]==run)
m_ctrlStateFlag10.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag10.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[10]==run)
m_ctrlStateFlag11.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag11.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[11]==run)
m_ctrlStateFlag12.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag12.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[12]==run)
m_ctrlStateFlag13.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag13.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[13]==run)
m_ctrlStateFlag14.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag14.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[14]==run)
m_ctrlStateFlag15.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag15.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[15]==run)
m_ctrlStateFlag16.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag16.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[16]==run)
m_ctrlStateFlag17.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag17.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[17]==run)
m_ctrlStateFlag18.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag18.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[18]==run)
m_ctrlStateFlag19.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag19.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
if(AlarmState[19]==run)
m_ctrlStateFlag20.SetIcon (AfxGetApp()->LoadIcon(IDI_ICON1+i));
else
m_ctrlStateFlag20.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
/*
Rec1.Default1 = Rec1.Buffer[9];
Rec1.Default0 = Rec1.Buffer[10];
Rec1.Total1 = Rec1.Buffer[11];
Rec1.Total0 = Rec1.Buffer[12];
Rec1.Speed1 = Rec1.Buffer[13];
Rec1.Speed0 = Rec1.Buffer[14];
*/
//TCHAR buf[32]={0};
//swprintf_s(buf, _T("%4.1f"), ((float)(Rec1.Total1*0XFD+Rec1.Total0)/10.0));
//SetDlgItemText(IDC_TOTAL_VOL1 , buf); /// 输注总量
//swprintf_s(buf, _T("%4.1f"), ((float)(Rec1.Speed1*0XFD+Rec1.Speed0)/10.0));
//SetDlgItemText(IDC_SPEED_RATE1 , buf); /// 输注速度
unsigned char abcd[9];
///FF 3A 75 A2 F1 35 7A 7D FE
//SyringeNum=0x02;
abcd[0]=0XFF;//帧头
abcd[1]=0X00;//地址1
abcd[2]=SyringeNum;//地址0
abcd[3]=0XA2;//命令1
abcd[4]=0XF1;//命令0
abcd[5]=0X35;//速度1
abcd[6]=0X7A;//速度0
abcd[7]=0X7D;//CRC8
abcd[8]=0XFE;//帧尾
// abcd[1]=0x3a;
// abcd[2]=0x75;
abcd[7]=CRC8((unsigned char *)abcd,7);
// if(Open==TRUE)
m_Port.WriteToPort((char *)abcd,9);
}
break;
case 2:
{
CommDataDecode();
}
break;
default:break;
}
CDialog::OnTimer(nIDEvent);
}