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

  • 相关阅读:
    对于想用OS但又觉得单片机资源太过紧张,状态机是个不错的选择分享一种状态机设计方法
    状态机实践入门
    Codewarrior 调试错误ILLEGAL_BP
    坑爹的AVR编译器中文路径问题
    跨入AVR
    atmega8 例程:USART串口通信
    2011总结
    atmega8 默认内部RC振荡 + 解锁
    关于AVR I/O 的驱动能力的介绍
    atmega8 例程:系统库函数的延迟
  • 原文地址:https://www.cnblogs.com/ccmfc/p/1822935.html
Copyright © 2011-2022 走看看