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

  • 相关阅读:
    LeetCode Valid Sudoku
    接下来复习的重点
    leetcode:LRU Cache
    [leetcode] Insertion Sort List
    [QT Creator]LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 。
    [leetcode]Sort List
    李开复的七封信
    (归并排序)
    应聘面试自我介绍范文
    判断一颗二叉树是否是平衡二叉树
  • 原文地址:https://www.cnblogs.com/ccmfc/p/1822935.html
Copyright © 2011-2022 走看看