Переглянути джерело

【软件版本】
V
【模块名称】
测试精灵场测模块
【问题原因】
完善设备拨出插入时的判断。
【修改描述】

【测试结果】

sat23 3 роки тому
батько
коміт
d8eba02bb6
1 змінених файлів з 38 додано та 15 видалено
  1. 38 15
      TestWizardTool/TestWizardTool/TestWizardToolDlg.cpp

+ 38 - 15
TestWizardTool/TestWizardTool/TestWizardToolDlg.cpp

@@ -152,7 +152,7 @@ void CTestWizardToolDlg::DoDataExchange(CDataExchange* pDX)
 BEGIN_MESSAGE_MAP(CTestWizardToolDlg, CDialog)
     ON_WM_SYSCOMMAND()
     ON_WM_PAINT()
-    ON_WM_QUERYDRAGICON()
+    ON_WM_DEVICECHANGE()
     ON_WM_QUERYDRAGICON()
     //}}AFX_MSG_MAP
     ON_WM_SIZE()
@@ -265,21 +265,44 @@ HCURSOR CTestWizardToolDlg::OnQueryDragIcon()
 
 BOOL CTestWizardToolDlg::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)
 {
-    switch (nEventType)
-    {
-        // 串口拨掉;
-    case DBT_DEVICEREMOVECOMPLETE:
-        break;
-        // 串口插入;
-    case DBT_DEVICEARRIVAL:
-        {
-            GetSysSerialPort(m_vtPorts);
-            InitSerialCombobox();
-            break;
-        }	
-    default:
-        break;
+    //DEV_BROADCAST_DEVICEINTERFACE* pdbd = (DEV_BROADCAST_DEVICEINTERFACE*)dwData;
+    DEV_BROADCAST_PORT *pbdp = (DEV_BROADCAST_PORT*)dwData;
+    if ( pbdp && _tcsstr(pbdp->dbcp_name, _T("COM")) )
+    {
+        // 查找是否有添加过该项;
+        int nIndex = m_cbCOM.FindString(0, pbdp->dbcp_name);
+        // 删除和新增前,先获取当前选中的项;
+        CString strCurCOM = _T("");
+        int nCurIndex = m_cbCOM.GetCurSel();
+        if ( nCurIndex != CB_ERR )
+            m_cbCOM.GetLBText(nCurIndex, strCurCOM);
+
+        if ( nEventType == DBT_DEVICEREMOVECOMPLETE )
+        {// 串口拨掉;
+            TRACE(_T("串口拨掉\n"));
+            if ( nIndex != CB_ERR )
+            {                
+                m_cbCOM.DeleteString(nIndex);
+                // 删除后, 由于索引变化了,要重新设置选中项;
+                if ( nCurIndex != CB_ERR )
+                    m_cbCOM.SelectString(0, strCurCOM);
+            }
+        }
+        else if ( nEventType == DBT_DEVICEARRIVAL )
+        {// 串口插入;
+           TRACE(_T("串口插入\n"));
+           if ( nIndex == CB_ERR )
+           {
+               m_cbCOM.AddString(pbdp->dbcp_name);
+               // 新增后,由于索引变化了,要重新设置选中项;
+               if ( nCurIndex != CB_ERR )
+                   m_cbCOM.SelectString(0, strCurCOM);
+           }
+        }
     }
+
+    TRACE(_T("OnDeviceChange\n"));
+
     return TRUE;
 }