扩展CEdit实现文件的拖动。

     很早之前,写测试的例子的时候,会把路径写死,现在感觉真傻。

      现在我最起码能想到3中方法。

      1.CEdit GetWindowText(手动拷贝路径)

      2.SHBrowseForFolder(让用户浏览)

      3.支持文件拖动(用户把文件拖到编辑框上,取得文件路径)

今天介绍第三种办法。

     1.资源文件中把 Accept Files设为true。

     2.扩展CEdit,响应 OnDropFiles

// XX.h
	afx_msg void OnDropFiles( HDROP hDropInfo); //添加消息处理 

// .cpp
BEGIN_MESSAGE_MAP(CDropFileEdit, CEdit)
  ON_WM_DROPFILES()   
END_MESSAGE_MAP()

void CDropFileEdit::OnDropFiles( HDROP hDropInfo)
{
	// TODO: Add your message handler code here and/or call default
	//取得被拖动文件的数目     
	int DropCount=DragQueryFile(hDropInfo,-1,NULL,0);
	for ( int i=0;i<DropCount;i++)
	{

		int NameSize=DragQueryFile(hDropInfo,i,NULL,0);
		HANDLE hHeap=GetProcessHeap();

		char *pName=( LPSTR )HeapAlloc(hHeap,HEAP_ZERO_MEMORY,NameSize++);
		if (pName==NULL)
		{
			MessageBox( "给文件名分配暂存空间时出错!" , "错误信息" ,MB_ICONERROR);
			return ;
		}
		//取得第i个拖动文件名所占字节数
		DragQueryFile(hDropInfo,i,pName,NameSize);
		//把文件名拷贝到缓冲区
		//   m_Dialog_List.AddString(pName);
		//文件名加入listbox中显示
		this ->SetWindowText(pName);
		HeapFree(hHeap,HEAP_ZERO_MEMORY,pName);
		//释放缓冲区
	}
	CEdit::OnDropFiles(hDropInfo);
} 

3.用扩展的CDropFileEdit 定义个变量,和资源中的Edit关联。


具体看资源里的代码 ulim.rar


4.支持拖动也是有缺陷的,用管理员权限运行,却不支持拖动,我晕倒。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值