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

  • 相关阅读:
    Angular5的new feature
    Angular集成UEditor
    Angular集成admin-lte框架
    Angular TypeScript开发环境集成jQuery扩展插件
    如何在 Docker 容器中运行 Kali Linux 2.0
    信息系统安全等级保护基本要求
    Angular学习笔记
    Ubuntu16.04部署phantomjs的一个问题
    仿探探卡片滑动vue封装并发布到npm
    使用vscode,新建.vue文件,tab自动生成vue代码模板
  • 原文地址:https://www.cnblogs.com/ccmfc/p/1822935.html
Copyright © 2011-2022 走看看