zoukankan      html  css  js  c++  java
  • 对话框(dialog)中文件的拖放

    在对话框中类向导没有像单文档中那样提供了拖放事件(在类向导中找不到自己写了^_^)

    建立一个对话框工程FileOffer

    第一步:

    在CFileOffer类中添加两个事件

    afx_msg int  OnCreate(LPCREATESTRUCT lpCreateStruct);

    afx_msg void OnDropFiles(HDROP hDropInfo);

    第二步:

    在FileOfferDlg.cpp中添加

    BEGIN_MESSAGE_MAP(CPlayTestDlg, CDialog)
     //{{AFX_MSG_MAP(CPlayTestDlg)
     ON_WM_SYSCOMMAND()
     ON_WM_PAINT()
     ON_WM_QUERYDRAGICON()

    //添加响应消息

    ON_WM_CREATE()

    ON_WM_DROPFILES()
     //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    第三步:

    int CFileOfferDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)

    {

      DragAcceptFiles(TRUE);

      return 0;

    }

    void CFileOfferDlg::OnDropFiles(HDROP hDropInfo)

    {

      char *pFilePath;

      int iFileNum;

      int iReturnByte;

      //得到拖放的文件数目

      iFileNum = ::DragQueryFiles(hDropInfo, -1, NULL, 0);

      

      for(int i=0; i<iFileNum; i++)

      {

        iReturnByte = DragQueryFile(hDropInfo, i, NULL, 0);         //返回文件字节数

        HANDLE hHeap = GetProcessHeap();

        pFilePath = (char *)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, iByte);

        if(pFilePath == NULL)

        {

            AfxMessageBox("分配内存不成功");

             exit(-1);

        }

        DragQueryFile(hDropInfo, i, pFilePath, piReturnByte+1);

        

        AfxMessageBox(pFilePath);

        ::HeapFree(hDropInfo, HEAP_ZERO_MEMORY, pFilePath);

      }

      DragFinish(hDropInfo);

    }

    三步到位OK

  • 相关阅读:
    连续子数组的最大和
    最小的K个数
    数组中出现次数超过一半的数字
    字符串的排列
    二叉搜索树与双向链表
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉搜索树的后序遍历序列
    Xcode5下去除Icon高光
    Unity3D-基本导航(NavMesh)功能实现
  • 原文地址:https://www.cnblogs.com/ccmfc/p/1822935.html
Copyright © 2011-2022 走看看