wxwidgets控件拖入文件名

                      wxwidgets直接往控件里拖入文件名:

   例子:wxtextctrl:中 拖入文件名;

     新建一个头文件CopyFilename.h

     

      #include <wx/dnd.h>
      #include <wx/textctrl.h>
      #include <wx/arrstr.h>
      /* 创建一个wxFileDropTarget对象用来接收拖入的文件
       * 重载OnDropFiles 实现拖入是操作
       */
    class CopyFilename : public wxFileDropTarget{
    private:
        wxTextCtrl* m_text;
    public:
       CopyFilename(wxTextCtrl *text);
       virtual bool OnDropFiles(wxCoord x, wxCoord y,const wxArrayString& filenames);
       ~CopyFilename();

    };


新建一个cpp文件 CopyFilename.cpp:

#include "CopyFilename.h"
    CopyFilename::CopyFilename(wxTextCtrl* text){
      m_text=text;
    }
    /**
     * 显示拖入的文件个数,和文件名
     */
    bool CopyFilename::OnDropFiles(wxCoord x, wxCoord y,const wxArrayString& filenames){
       size_t nFiles=filenames.GetCount();
       wxString str;
       str.Printf( wxT("%d files dropped"), (int) nFiles);
       for(size_t n=0; n<nFiles;n++){
        m_text->AppendText(filenames[n]);
       }
        return true;
    }
    CopyFilename::~CopyFilename(){}

   再在主界面中的wxtextctrl控件中;添加

   TextCtrl1->SetDropTarget(new CopyFilename(TextCtrl1));

  之后拖入文件就能显示文件名了。。。

  另外; 可以通过 wxString ws;
    ws=TextCtrl1->GetValue();
    ws.Replace("\\","/");

    将获取的文件名转换成程序能认的路径: 如:拖入的文件d:\a.txt,最终变成 d:/a.txt


         

你可能感兴趣的:(wxwidgets控件拖入文件名)