关于鼠标拖放操作
我想将某个文件夹用鼠标拖放到我编写的程序的窗口里面,然后我的程序获得这个文件夹的绝对路径。请问如何实现?我看过其他的帖子说是用Shell扩展,还有其他比较簡単的实现方法吗?
[解决办法]
从Exploer拖放到你的程序中,这个简单,处理WM_DROPFILES消息即可。如果是想从自己的程序中拖出到Explorer中,这个才需要用到Shell扩展。
[解决办法]
简单示例:
首先需要设置使窗体接受拖放
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// 使窗体接受拖放
::DragAcceptFiles(Handle, true);
}
private:// User declarations
void __fastcall WndProc(TMessage &Msg);
void __fastcall TForm1::WndProc(TMessage &Msg)
{
if (Msg.Msg == WM_DROPFILES)
{
TCHAR szFileName[MAX_PATH];
UINT uFileCount = ::DragQueryFile((HDROP)Msg.WParam, 0, szFileName, MAX_PATH);
::DragFinish((HDROP)Msg.WParam);
if (!uFileCount) return;
Caption = szFileName;
}
TForm::WndProc(Msg);
}