关于网友提出的“ 如何实现将拖拽的文件让接受拖放文件打开呢?”问题疑问,本网通过在网上对“ 如何实现将拖拽的文件让接受拖放文件打开呢?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 如何实现将拖拽的文件让接受拖放文件打开呢?描述:
本帖最后由 void_main_void 于 2015-09-24 09:58:42 编辑
如何实现将拖拽的文件让接受拖放文件打开呢?就相当于打开一个看图软件, 然后我用鼠标拖拽一张图片拖放到看图软件上。看图软件就能自动打开。 这是如何实现的呢?
解决方案1:
5楼正解
#include
int main(int c, char **arg)
{
if (c < 2) printf("no inputfile\n");
else printf("path = %s", arg[1]);
getchar();
return 0;
}
把这程序编译连接成exe程序后,随便拖个文件给它, 就能显示拖过来的文件的路径, MFC里, main函数被屏蔽了, 不过可以通过其他方法读到命令行参数, 网上一搜就有 解决方案2:
lz觉得main函数的参数是干嘛用的.
解决方案3: "让程序模拟拖拽一张图片到看图软件上这一过程。"
还是不明白, 看图软件 如果 能 Drop ,那 你就可以 Drag
发一个 那个程序 使用的 菜单 Open 命令 , 或者 快捷键
"看图软件打开它"
发送 open file 命令
// drag from explorer, not from tree !
void CMyAnimateCtrl::OnDropFiles(HDROP hDrop)
{
// Get number of files dropped
CString Path;
char szAviPath[260];
UINT nDropped;
nDropped = DragQueryFile(hDrop,0xFFFFFFFF,NULL,0);
if (nDropped==1)
{
DragQueryFile(hDrop, 0, szAviPath, 260);
DragFinish(hDrop); /* Delete structure alocated */
Path=szAviPath;
Path.MakeUpper();
if(Path.Right(4) != ".AVI" )
{
AfxMessageBox("Please choose a avi file!");
return;
}
ChangeAvi(Path);
}
}
//
BOOL CMyAnimateCtrl::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
static BOOL D />
if(!Done)
{
D />DragAcceptFiles(TRUE);
}
....
// h
class CMyAnimateCtrl : public CAnimateCtrl
afx_msg void OnDropFiles(HDROP hDrop);