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

  • 相关阅读:
    开发者和设计师:为何我们不能好好相处?(转载)
    PHP ACCESS
    来自腾讯的session跨域,跨服代码
    php大括号妙用。
    php mysql 记录集的操作
    开始我的代码笔记
    收藏一个php用的一个页码按钮类
    修改过后的数字英文字符生成图片代码
    搜藏一点php session 常用方法
    php包含漏洞收集程序代码
  • 原文地址:https://www.cnblogs.com/ccmfc/p/1822935.html
Copyright © 2011-2022 走看看