我在子对话框定义了一个指向其他对话框的指针pDlg,然后子对话框执行以下消息响应函数,不知道这样定义指针在最后执行CSetINIDialog::OnOK();语句的时候会不会出问题,还请各位高手给与指点,谢谢! //基准中断
UpdateData(TRUE);
pDlg->m_DCSDate.m_INT0Period=m_INT0Period;
m_INT0Period=m_INT0Period*10000/625-1;
BYTE senddata0[2] = {0};
senddata0[0] = 0x20;
senddata0[1] = 256-(BYTE)m_INT0Period;
pDlg->m_DCSSerial.Write(senddata0,2);
//中断电路1
pDlg->m_DCSDate.m_INT1Period=m_INT1Period;
m_INT1Period=m_INT1Period*10000/625-1;
BYTE senddata1[2] = {0};
senddata1[0] = 0x24;
senddata1[1] = 256-(BYTE)m_INT1Period;
pDlg->m_DCSSerial.Write(senddata1,2);
//中断电路2
pDlg->m_DCSDate.m_INT2Period=m_INT2Period;
m_INT2Period=m_INT2Period*10000/625-1;
BYTE senddata2[2] = {0};
senddata2[0] = 0x28;
senddata2[1] = 256-(BYTE)m_INT2Period;
pDlg->m_DCSSerial.Write(senddata2,2);
//中断电路3
pDlg->m_DCSDate.m_INT4Period=m_INT4Period;
m_INT4Period=m_INT4Period*10/625-1;
m_INT4Period=1024-m_INT4Period;
BYTE senddata4[2] = {0};
senddata4[0] = 0x2C|((BYTE)(m_INT4Period>>8));
senddata4[1] = (BYTE)m_INT4Period;
pDlg->m_DCSSerial.Write(senddata4,2); MessageBox("配置成功!");
CSetINIDialog::OnOK();
UpdateData(TRUE);
pDlg->m_DCSDate.m_INT0Period=m_INT0Period;
m_INT0Period=m_INT0Period*10000/625-1;
BYTE senddata0[2] = {0};
senddata0[0] = 0x20;
senddata0[1] = 256-(BYTE)m_INT0Period;
pDlg->m_DCSSerial.Write(senddata0,2);
//中断电路1
pDlg->m_DCSDate.m_INT1Period=m_INT1Period;
m_INT1Period=m_INT1Period*10000/625-1;
BYTE senddata1[2] = {0};
senddata1[0] = 0x24;
senddata1[1] = 256-(BYTE)m_INT1Period;
pDlg->m_DCSSerial.Write(senddata1,2);
//中断电路2
pDlg->m_DCSDate.m_INT2Period=m_INT2Period;
m_INT2Period=m_INT2Period*10000/625-1;
BYTE senddata2[2] = {0};
senddata2[0] = 0x28;
senddata2[1] = 256-(BYTE)m_INT2Period;
pDlg->m_DCSSerial.Write(senddata2,2);
//中断电路3
pDlg->m_DCSDate.m_INT4Period=m_INT4Period;
m_INT4Period=m_INT4Period*10/625-1;
m_INT4Period=1024-m_INT4Period;
BYTE senddata4[2] = {0};
senddata4[0] = 0x2C|((BYTE)(m_INT4Period>>8));
senddata4[1] = (BYTE)m_INT4Period;
pDlg->m_DCSSerial.Write(senddata4,2); MessageBox("配置成功!");
CSetINIDialog::OnOK();
单击菜单弹出小对话框,
小对话框有按钮void CSetINIDialog::OnOKSetIni()能把数据返回到CUSBDCSDocument里面
小对话框是模态对话框
pDlg是小对话框***.h的public中声明的,指向CUSBDCSDlg
void CSetINIDialog::OnOKSetIni()
{
// TODO: Add your control notification handler code here
//基准中断
UpdateData(TRUE);
CUSBDCSDlg* pDlg;
pDlg->m_DCSDate.m_INT0Period=m_INT0Period;
m_INT0Period=m_INT0Period*10000/625-1;
BYTE senddata0[2] = {0};
senddata0[0] = 0x20;
senddata0[1] = 256-(BYTE)m_INT0Period;
pDlg->m_DCSSerial.Write(senddata0,2);
//中断电路1
pDlg->m_DCSDate.m_INT1Period=m_INT1Period;
m_INT1Period=m_INT1Period*10000/625-1;
BYTE senddata1[2] = {0};
senddata1[0] = 0x24;
senddata1[1] = 256-(BYTE)m_INT1Period;
pDlg->m_DCSSerial.Write(senddata1,2);
//中断电路2
pDlg->m_DCSDate.m_INT2Period=m_INT2Period;
m_INT2Period=m_INT2Period*10000/625-1;
BYTE senddata2[2] = {0};
senddata2[0] = 0x28;
senddata2[1] = 256-(BYTE)m_INT2Period;
pDlg->m_DCSSerial.Write(senddata2,2);
//中断电路3
pDlg->m_DCSDate.m_INT4Period=m_INT4Period;
m_INT4Period=m_INT4Period*10/625-1;
m_INT4Period=1024-m_INT4Period;
BYTE senddata4[2] = {0};
senddata4[0] = 0x2C|((BYTE)(m_INT4Period>>8));
senddata4[1] = (BYTE)m_INT4Period;
pDlg->m_DCSSerial.Write(senddata4,2); MessageBox("配置成功!");
CSetINIDialog::OnOK();
}
pDlg->m_DCSDate.m_INT0Period=m_INT0Period貌似pDlg没初始化就被使用了。既然pDlg是成员变量,为什么这里又重新定义一个?
CUSBDCSDlg* pDlg=new CUSBDCSDlg;
应该可以解决内存问题