文本框控件(Edit Control)如何才能支持拖拽功能????

thor_lee 2009-05-25 07:34:59
我在MFC程序的生成的对话框程序中加入了一个Edit Control控件,然后用拖拽的方式,把文件往Edit Control中拖,然后在Edit Control显示出拖进来的文件的名字。
我知道Dialog也可以实现这样的功能,而且有WM_DROPFILES消息可以响应,把行为中的Accept Files设置成true后,对该消息添加响应的处理函数就能实现上述功能,我也写了一小段代码,证明是成功的。
但我找了半天,只发现Edit Control属性的行为中也有个Accept Files,选成true后,把文件往里面拖可以看到鼠标发生的变化,但却不能响应响应的消息。Edit Control的控件事件中也没有和WM_DROPFILES消息相关的……
到底要怎么做才能让Edit Control也能对拖拽事件产生响应呢????还是需要响应WM_DROPFILES消息?或者是用其他什么办法呢???多谢各位了~!!!!!
...全文
524 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjkywxl 2012-05-18
  • 打赏
  • 举报
回复
怎么我看不到1楼的回复啊。。。。。。。。。。。。。
thor_lee 2009-05-26
  • 打赏
  • 举报
回复
怎么还没人来呀 哎 …… 55555555555
thor_lee 2009-05-26
  • 打赏
  • 举报
回复
兄台,还是不行呀~~~~

上面那段代码怎么看着有点晕啊~

假设对话框类名字叫CMyDlg

m_cEdit.ModifyStyleEx(0, WS_EX_ACCEPTFILES);
//这个m_cEdit是在定义在哪里??是在文本框上右键-》添加变量,然后添加CEdit类型的成员变量的吗??
//如果是这样,那么这句代码应该是在CMyDlg的构造函数中咯?

BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
//{{AFX_MSG_MAP(CMyEdit)
ON_WM_DROPFILES()
//}}AFX_MSG_MAP

END_MESSAGE_MAP()


void CMyEdit::OnDropFiles(HDROP hDropInfo)
{
if (hDropInfo)
{
int nDrag;
nDrag = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);
if (nDrag == 1)
{
TCHAR Path[MAX_PATH];
int len;
len = DragQueryFile(hDropInfo, 1, Path, MAX_PATH);
SetWindowText(Path);
}
}
//这两端代码应该是在文本框上右键-》添加类,然后加入到生成的类文件MyEdit.cpp中相应部分的吗???
//上面MESSAGE_MAP中显示CMyEdit的父类是CEdit,但是我在右键添加类的时候,
//CMyEdit的父类选择中没有CEdit啊……晕了

总之,我按照上面的理解去做,结果还是出不来……不知道哪里做错了,还望大哥指教,小弟菜鸟一只,多谢了……
thor_lee 2009-05-25
  • 打赏
  • 举报
回复
恩啦 嗯啦~~~~ 多谢楼上的兄弟 我这就去试试~!!! 完了就来汇报消息 哈哈~!!!!!
biweilun 2009-05-25
  • 打赏
  • 举报
回复
关键是 WS_EX_ACCEPTFILES风格 与 OnDropFiles()方法 还有 DragQueryFile()函数
biweilun 2009-05-25
  • 打赏
  • 举报
回复
m_cEdit.ModifyStyleEx(0, WS_EX_ACCEPTFILES);
.....

BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
//{{AFX_MSG_MAP(CMyEdit)
ON_WM_DROPFILES()
//}}AFX_MSG_MAP

END_MESSAGE_MAP()


void CMyEdit::OnDropFiles(HDROP hDropInfo)
{
if (hDropInfo)
{
int nDrag;
nDrag = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);
if (nDrag == 1)
{
TCHAR Path[MAX_PATH];
int len;
len = DragQueryFile(hDropInfo, i, Path, MAX_PATH);
SetWindowText(Path);
}
}

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧