如题,请大虾给个例子代码并解释下

解决方案 »

  1.   

    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    ...this->ModifyStyleEx(0, WS_EX_ACCEPTFILES);return 0;
      

  2.   

    然后处理消息case WM_DROPFILES:
    //...
    TCHAR Buffer[MAX_PATH];
    unsigned int i;
    unsigned int NumberOfDrags;
    NumberOfDrags = DragQueryFile((HDROP)wParam, 0xFFFFFFFF, Buffer , MAX_PATH);
    for (i = 0, NumberOfDrags , i++) {
    DragQueryFile((HDROP)wParam, i, Buffer , MAX_PATH);
    //actions here
    }
      

  3.   

    我当时没用这个
    我当时是直接给CMainFrame添加了WM_DROPFILES消息,然后在相应的响应函数里写2楼差不多的代码
    void CMainFrame::OnDropFiles(HDROP hDropInfo)
    {
          //获取拖动的文件个数
           const int fileCount = DragQueryFile(hDropInfo, (UINT)-1, NULL, 0);
    ASSERT(fileCount >= 1);//  for (int i=0;i<fileCount;i++)
    //  {
    //  TCHAR fileName[MAX_PATH] = { 0 };
    //  DragQueryFile(hDropInfo,i,fileName,MAX_PATH);
    //  CString str;
    //  str.Format("%s",fileName);
    //  } //if fileCount>1,open the last file
    TCHAR fileName[MAX_PATH] = { 0 };
           //fileName,包含文件名
    DragQueryFile(hDropInfo,fileCount-1,fileName,MAX_PATH);
           //最后执行你要执行的操作
    }
      

  4.   

    http://baike.baidu.com/view/2328511.htm
    http://hi.baidu.com/qiujiejia/blog/item/d986eb3b2822d1e415cecba0.html
      

  5.   

    直接重载CMainFrame的WM_DROPFILES消息,
    然后在相应的响应函数void CMainFrame::OnDropFiles(HDROP hDropInfo)
    里面做你想要的操作
    比较好