串口在已被占用,或者不存在的情况下,进入Catch里。我曾在Catch里做过很多尝试,关闭程序时(做了关闭串口和释放串口对象的动作的)还是要泄漏内存。
CFireProtection是MSComm的派生类。CFireProtection的对象是以指针形式创建的。
代码如下: m_pFireProtection = new CFireProtection();
m_pFireProtection->Create(NULL,WS_CHILD,CRect(0,0,0,0),this,IDC_MSCOMM_FIRE,NULL,false,CMSComm::bstrLicense);
m_pFireProtection->SetPort(1);
m_pFireProtection->SetBaudrate(9600);
m_pFireProtection->SetDatabits(8);
m_pFireProtection->SetStopbits(1);
m_pFireProtection->SetParity('N');
m_pFireProtection->InitComm();void CFireProtection::InitComm(void)
{
CString   str;
put_InputMode(1);
put_RThreshold(1);
put_OutBufferSize(1024);//
put_InputLen(0);
put_InBufferSize(1024);
str.Format(_T("%d,%C,%d,%d"),m_nbaudrate,m_cParity,m_databits,m_stopbits);
put_Settings(str);
BOOL bol = get_PortOpen();
if(!bol)
{
try
{
put_PortOpen(TRUE);
}
catch(...)
{
return;
}
}
    str =get_Input();
}
//程序关闭时的清理动作:void CDataAgentDlg::OnDestroy()
{
m_pFireProtection->CloseComm();
CDialog::OnDestroy();
delete m_pFireProtection;