ODlg.cpp BEGIN_MESSAGE_MAP(CODlg, CDialog)
//{{AFX_MSG_MAP(CODlg)
ON_CBN_EDITCHANGE(IDC_COMBO, OnSelchangeCombo)
//}}AFX_MSG_MAP
ON_MESSAGE(CM_RECEIVE,OnRecieveData)END_MESSAGE_MAP()
void CODlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CODlg)
DDX_CBString(pDX, IDC_COMBO, m_szCom);
//}}AFX_DATA_MAP
}
void CODlg::OnSelchangeCombo() 
{
// TODO: Add your control notification handler code here
CComboBox * m_combo = (CComboBox *)GetDlgItem(IDC_COMBO);
int nselect = m_combo->GetCurSel();
m_combo->GetLBText(nselect,m_szCom);}// ODlg.h : header file
afx_msg void OnSelchangeCombo();
ODlg.cpp
HANDLE CConCtrl::Initialize(CString m_szCom)
{
if (m_hCom==NULL || m_hCom == INVALID_HANDLE_VALUE || this->m_szCom != m_szCom )
{
CloseHandle(m_hCom);
m_hCom = CreateFile("COM4",GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
if (m_hCom == INVALID_HANDLE_VALUE)
{
AfxMessageBox("开启端口失败");
m_hCom =NULL;
return NULL;
}
else
{

DCB dcb;   //DCB串口通讯中的一种结构 DDX
GetCommState(m_hCom,&dcb);
dcb.BaudRate = 115200;
dcb.fBinary = TRUE;
dcb.fParity = TRUE;
dcb.ByteSize = 8;
dcb.Parity = ODDPARITY;
dcb.StopBits = ONESTOPBIT;
if (!SetCommState(m_hCom,&dcb))
{
AfxMessageBox("初始化端口失败!");
CloseHandle(m_hCom);
return NULL;
}
SetupComm(m_hCom,7,7);
COMMTIMEOUTS ct;   //读写超时设置
ct.ReadIntervalTimeout = 0;
ct.ReadTotalTimeoutMultiplier = 1;
ct.ReadTotalTimeoutConstant = 1000;
ct.WriteTotalTimeoutMultiplier = 1;
ct.WriteTotalTimeoutConstant = 1000;
SetCommTimeouts(m_hCom,&ct);
if (!SetCommMask(m_hCom,EV_RXCHAR | EV_TXEMPTY))
{
AfxMessageBox("掩码设置失败!");
CloseHandle(m_hCom);
return NULL;
}
PurgeComm(m_hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);

}
}
return m_hCom;