VC 里面使用  OnDeviceChange( UINT nEventType, DWORD dwData );  1.在类声明处添加成员函数
protected:
   afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData );
  2.在相应的cpp文件中加入BOOL OnDeviceChange(UINT, DWORD)的函数体;
BOOL CXXXXX::OnDeviceChange( UINT nEventType, DWORD dwData )
{
 if(nEventType == DBT_DEVICEARRIVAL)
  MessageBox("CD arrival","Note",MB_OK+MB_ICONINFORMATION);
 return TRUE;}
 3。在消息映射宏中加入
BEGIN_MESSAGE_MAP(CXXXXXX, CDialog)
 //{{AFX_MSG_MAP(CTest031Dlg)
 ON_WM_SYSCOMMAND()
 ON_WM_PAINT()
 ON_WM_QUERYDRAGICON()
 //}}AF 
请问在delphi里面 Ondevicechange 怎样使用啊

解决方案 »

  1.   

    //检测光驱事件
      procedure WMDevicechange(var Message: TMessage);
      message WM_DEVICECHANGE;procedure TForm1.WMDevicechange(var Message: TMessage);
    const
      DBT_DEVICEARRIVAL=$8000;
      DBT_DEVICEREMOVECOMPLETE=$8004;
    begin
      try
        case Message.WParam of
          DBT_DEVICEARRIVAL:
            showmessage('光驱弹入');
          DBT_DEVICEREMOVECOMPLETE:
            showmessage('光驱弹出');
        end;
      except
        showmessage('出错');
      end;
    end;
      

  2.   

    两个参数UINT nEventType, DWORD dwData  怎么办呢
      

  3.   

    不要这两个参数了,这两个参数是VC处理TMessage结构得到的,我们可以直接使用TMessage这个结构,比如Message.WParam就是对应的nEventType,而Message.LParam可能就是对应的dwData(类型可能要转换一下)。