比如从主机中插入或拔出1个终端,怎么样得到扑捉这个事件?

解决方案 »

  1.   

    谢谢提示
    找到这个东东
    OnDeviceChange好像是捕捉这类事件的但是怎么用?谢谢了
      

  2.   

    我已经:
    1.在类声明处添加成员函数
      protected:
       afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData );
    2.在相应的cpp文件中加入BOOL OnDeviceChange(UINT, DWORD)的函数体;
      BOOL CXXXXX::OnDeviceChange( UINT nEventType, DWORD dwData )
      {
      }
    3。在消息映射宏中加入
     BEGIN_MESSAGE_MAP(CXXXXXX, CDialog)
      //{{AFX_MSG_MAP(CTest031Dlg)
      ON_WM_SYSCOMMAND()
      ON_WM_PAINT()
      ON_WM_QUERYDRAGICON()
      //}}AFX_MSG_MAP
      ON_WM_DEVICECHANGE() //此句为加入的映射,注意:一定要将这句加在两个AFX_MSG_MAP外
      END_MESSAGE_MAP()但是还是不能响应消息,是不是在之前被什么函数处理掉了?另外“  ON_WM_DEVICECHANGE() //此句为加入的映射,注意:一定要将这句加在两个AFX_MSG_MAP外”
    为什么要加到两个AFX_MSG_MAP外?
      

  3.   

    重载WndProc 
     case WM_DEVICECHANGE:              PDEV_BROADCAST_HDR lpdb;             switch(wParam) //device-change event ;
                 {       
                 case DBT_DEVICEARRIVAL: 
                               lpdb = (PDEV_BROADCAST_HDR) lParam;
                               if (lpdb->dbch_devicetype == DBT_DEVTYP_PORT)// serial, parallel
                               {         // SD 
                                        
                               }
                              if (lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME)  // logical volume
                              {          //usb disk
                                           
                               }
                               //DBT_DEVTYP_NET      // network resource       
                               break;             case DBT_DEVICEREMOVECOMPLETE:  // device is gone  0x8004
                               lpdb = (PDEV_BROADCAST_HDR) lParam;
                               if (lpdb->dbch_devicetype == DBT_DEVTYP_PORT)
                               {   // 
                                      
                               }
                               if (lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME)
                               {          //usb
                                     
                               }
                               break;             }
                 break;