请大家帮忙看一个编译错误,运行环境VS2005;
谢谢。//////////for(int i = 1; i <=32; i++)   
//////////{
//////////      if((dbv->dbcv_unitmask>>i) == 0x01)  
//////////            break;  
//////////CString   strText;  
strText.Format("\\\\.\\%c:", i+0x41);  
//////////m_hDevice[i] = CreateFile(strText, GENERIC_ALL,FILE_SHARE_WRITE, NULL, OPEN_EXISTING, //////////FILE_ATTRIBUTE_NORMAL,NULL); error C2664: 'void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)' : cannot convert parameter 1 from 'const char [8]' to 'const wchar_t *'

解决方案 »

  1.   

     
    你用的UNICODE编码,引号前加L即可:
    strText.Format(L"\\\\.\\%c:", i+0x41); 
      

  2.   

    在Button的Click方法里面,可以调用下面的函数么?
    在什么时候会执行下面的函数(里面有执行操作的代码);
    对回调函数不熟,请大家介绍下,谢谢LRESULT CALLBACK WindowProc(
      HWND hwnd,       // handle to window
      UINT uMsg,       // message identifier
      WPARAM wParam,   // device-change event
      LPARAM lParam    // event-specific data
    )

    ......

      

  3.   

    什么时候会执行LRESULT CALLBACK WindowProc(
      HWND hwnd,       // handle to window
      UINT uMsg,       // message identifier
      WPARAM wParam,   // device-change event
      LPARAM lParam    // event-specific data
    )

    ......

    里面的代码?
      

  4.   

    等下我贴出要实现的禁止和启用优盘USB口的代码,请帮忙看下,谢谢
      

  5.   

    ////////////////////////////////////////////////////////////////
    要实现的功能是:正常情况下禁用优盘,有优盘插入就不允许读里面的资料;
    特殊情况下再启用优盘USB口;
    ////////////////////////////////////////////////////////////////
    // TestUSBDlg.h : 头文件
    //
    // 实现
    public:
    LRESULT CALLBACK WindowProc(
      HWND hwnd,       // handle to window
      UINT uMsg,       // message identifier
      WPARAM wParam,   // device-change event
      LPARAM lParam    // event-specific data
    );
    ////////////////////////////////////////////////////////////////
    // stdafx.h : 标准系统包含文件的包含文件,
    //

    #include <Windows.h>
    #include <Winbase.h>
    #include <Winuser.h>
    #include <Dbt.h>
    #include <Winioctl.h>
    ////////////////////////////////////////////////////////////////
    // TestUSBDlg.cpp : 实现文件
    //

     LRESULT CTestUSBDlg::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
     {
      HANDLE m_hDevice[100];  if(uMsg == WM_DEVICECHANGE)   
      {   
      switch(wParam)   
      {   
      case   DBT_DEVICEARRIVAL   : //设备插入消息   
      DEV_BROADCAST_HDR   *dbh;   
      dbh = (DEV_BROADCAST_HDR*)lParam;     if(dbh->dbch_devicetype == DBT_DEVTYP_VOLUME)   
      {   
      DEV_BROADCAST_VOLUME   *dbv;   
      dbv   =   (DEV_BROADCAST_VOLUME*)lParam;   
      for(int i = 1; i <=32; i++)   
      {
      if((dbv->dbcv_unitmask>>i) == 0x01)   
      break;   
      CString   strText;   
      strText.Format(L"\\\\.\\%c:", i+0x41);   
      m_hDevice[i] = CreateFile(strText, GENERIC_ALL,FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);    if(m_hDevice[i] != INVALID_HANDLE_VALUE)//USB   
      {
      //如果CreateFile允许写成功判断为USB   
      DWORD   dwRs;   
      DeviceIoControl(m_hDevice[i], FSCTL_LOCK_VOLUME, NULL, 0, NULL, 0, &dwRs, NULL );   
      }     else //CDROM   
      {   
      m_hDevice[i] = CreateFile(strText, GENERIC_READ, FILE_SHARE_READ , NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);   
      if(m_hDevice[i] != INVALID_HANDLE_VALUE)   
      {   
      DWORD   dwRs;   
      DeviceIoControl(m_hDevice[i],FSCTL_LOCK_VOLUME,NULL, 0, NULL, 0, &dwRs, NULL);   
      }   
      }  //End of else //CDROM 
      } //End of for(int i = 1; i <=32; i++) 
      } //End of if(dbh->dbch_devicetype == DBT_DEVTYP_VOLUME)  
      break;   
      } //End of switch(wParam)   
      } //End of  if(uMsg == WM_DEVICECHANGE) 
       return CTestUSBDlg::WindowProc(hwnd, uMsg,  wParam, lParam);
     }
    ////////////////////////////////////////////////////////////////
    void CTestUSBDlg::OnBnClickedBtntestusb()
    {
    // TODO: 在此添加控件通知处理程序代码
        //CTestUSBDlg::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
    }

    ////////////////////////////////////////////////////////////////