[求助]Drag and Drop 问题

fairchild811 2008-03-28 11:52:16
Form上放置一个Memo,拖动一个文本文件到Memo上,可以直接打开,如同Notepad一样。
如果用
MESSAGE void __fastcall WMDropFiles(TMessage &Msg);

BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_DROPFILES, TMessage, WMDropFiles)
END_MESSAGE_MAP(TForm)

DragAcceptFiles(Handle, true);

sum = DragQueryFile(HDROP(Msg.WParam), 0xFFFFFFFF, NULL, 0);
for(i=0; i<sum; i++)
{
DragQueryFile(HDROP(Msg.WParam), i, FileName, 128 )
}
DragFinish(HDROP(Msg.WParam));
LoadData(FileName);
这种方式来实现,似乎文件拖放到窗口的任何地方都可以打开,包括标题栏等等。

请问,怎么样才能只有拖动到Memo上才能打开,而在标题栏等等不能打开。

或者比如Form上有两个Memo,怎样实现拖动到其中一个上能打开,另外一个不能。

谢谢!!!
...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fairchild811 2008-03-29
  • 打赏
  • 举报
回复

我试着修改了DragAcceptFiles(Handle, true);

为DragAcceptFiles(Memo1->Handle, true);

当拖放文件到标题栏的时候,不再显示能拖放的鼠标图案,但是拖放到Memo上后也不执行loaddata了。

具体程序里用的是TeeChart的Chart控件,没有试Memo,觉得应该是一样吧
fairchild811 2008-03-29
  • 打赏
  • 举报
回复
//此处在Memo1打开Filename ??

什么意思,memo1->loadfromfile(FileName)?

这样还是不能避免文件拖放到如标题栏之类的非Memo区域就能执行loaddata(filename)吧?

ydlchina 2008-03-29
  • 打赏
  • 举报
回复
for(i=0; i <sum; i++)
{
DragQueryFile(HDROP(Msg.WParam), i, FileName, 128 ) ;
//此处在Memo1打开Filename
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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