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