WTL拖拽文件
1.对话框属性中把:Accept Files设置为TRUE,或者ModifyStyleEx(0, WS_EX_ACCEPTFILES);
2.在对话框中添加一个ListBox控件,并关联成员变量:m_lstTest;
3.在ListBox属性中同样把:Accept Files设置为TRUE;
4.添加消息响应:
MESSAGE_HANDLER(WM_DROPFILES, OnDropFiles)
LRESULT OnDropFiles(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
5.实现:
LRESULT CMainDlg::OnDropFiles(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
HDROP hDrop = (HDROP)wParam;
wchar_t buf[MAX_PATH] = {0};
int nFileCount = DragQueryFile(hDrop, 0xFFFFFFFF, buf, MAX_PATH);//经检MSDN,0xFFFFFFFF返回托拽文件个数
if(nFileCount > 0)
{
for(int i = 0; i < nFileCount; i++)
{
memset(buf, 0, MAX_PATH);
DragQueryFile(hDrop, i, buf, MAX_PATH);
RECT rtTest;
m_lstTest.GetWindowRect(&rtTest);
POINT pt;
GetCursorPos(&pt);
if(::PtInRect(&rtTest, pt))
{
m_lstTest.AddString(buf);
}
}
}
DragFinish(hDrop);
return 0;
}
在实际工作中还会遇到另一个问题,如果编译选项中UAC选择的是requireAdministrator的话(默认是:asInvoker),WIN7中托拽文件不成功,大概原因是低权限无法向高权限发消息引起的问题.
解决方案是(借用别人方法):
typedef BOOL (WINAPI *_ChangeWindowMessageFilter)( UINT , DWORD);
BOOL AllowMeesageForVista(UINT uMessageID, BOOL bAllow)//注册Vista全局消息
{
BOOL bResult = FALSE;
HMODULE hUserMod = NULL;
//vista and later
hUserMod = LoadLibrary( L"user32.dll" );
if( NULL == hUserMod )
{
return FALSE;
}
_ChangeWindowMessageFilter pChangeWindowMessageFilter = (_ChangeWindowMessageFilter)GetProcAddress( hUserMod, "ChangeWindowMessageFilter" );
if( NULL == pChangeWindowMessageFilter )
{
return FALSE;
}
bResult = pChangeWindowMessageFilter( uMessageID, bAllow ? 1 : 2 );//MSGFLT_ADD: 1, MSGFLT_REMOVE: 2
if( NULL != hUserMod )
{
FreeLibrary( hUserMod );
}
return bResult;
}
在OnInitDialog中加入三句:
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
...
AllowMeesageForVista(WM_DROPFILES, TRUE);
AllowMeesageForVista(WM_COPYDATA, TRUE);
AllowMeesageForVista(0x0049, TRUE);
...
}
WTL拖拽文件的更多相关文章
- window响应拖拽文件操作
window响应拖拽文件操作 1.首先调用DragAcceptFiles,让控件或者窗体支持文件拖动操作函数功能:用来为拖放文件作初始化.函数原型: void DragAcceptFiles( HWN ...
- Unity输出PC端(Windows) 拖拽文件到app中
需求:给策划们写一个PC端(Window)的Excel导表工具.本来用OpenFile打开FileExplorerDialog后让他们自己选择想要添加的Excel文件就行了,结果有个需求是希望能拖拽E ...
- [Java]接受拖拽文件的窗口
至于这个问题,Java的awt.dnd包下提供了许多完成这一功能的类 例如DropTarget.DropTargetListener等 先来讲一下DropTarget类,这个类完成和拖拽.复制文件等操 ...
- 解决Duilib集成CEF浏览器在Win10无法向客户区拖拽文件
在Duilib中集成CEF浏览器项目实际开发中,遇到一个问题. 一个需求从资源管理器(桌面)拖拽文件到客户端,窗口捕获WM_DROPFILES消息然后进行消息处理,但客户区是集成的CEF浏览器,浏览器 ...
- atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结 1. DND的操作流程 1 2. Html5 注 ...
- vm虚拟机Kali无法拖拽文件解决办法
vm虚拟机Kali无法拖拽文件解决办法 apt-get updateapt-get install open-vm-tools-desktop fusereboot
- html5实现拖拽文件上传
以下是自学it网--中级班上课笔记 网址:www.zixue.it html文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict ...
- html5 拖拽文件到页面实现上传
思路:监听拖拽区域的 drop 事件,阻止浏览器上的默认拖拽事件 参考:http://www.helloweba.com/view-blog-192.html 例子: <!DOCTYPE htm ...
- 关于安装了VMware tools后仍然不支持拖拽文件的问题
我在学校机房里面的redhat4上面安装了VMware tools之后能正常支持拖拽,但是我自己电脑上的却不支持,折腾了好久,网上找了很久也还是没有解决,不过发现了一些问题,总结如下:(当然我总结的这 ...
随机推荐
- 微信小程序资源整理
微信小程序相关的文档.教程.开源项目等资源的整理,以便于开发学习使用. —— —— 收录仅作个人学习使用,涉及侵权行为及时联系: maple_6392@163.com 项目地址:GitHub | 码云 ...
- python 并发编程 多线程 线程理论
操作系统比作一家公司,进程相当于一个部门 线程相当于一个部门的成员 进程之间是互相隔离的 一 什么是线程 1. 每启动一个进程 至少有一个线程, 在传统操作系统中,每个进程有一个地址空间,而且默认 ...
- Elasticsearch-搜索并获取数据
Elasticsearch-搜索并获取数据 在group中搜索elasticsearch curl -XGET "localhost:9200/get-together/group/_sea ...
- HDU 6175 算术
题目大意 求 $\sum_{i = 1}^{n} \sum_{j = 1}^{m} \mu(\lcm(i, j))$ . $ 1 \le n, m \le 10^6 $ . 分析 不妨设 $ n \l ...
- Luogu P1650 田忌赛马
题目 如果我们最大比对面最大大,那么直接用. 如果我们最小比对面最小大,那么直接用. 否则用我们最小去换对面最大. #include<bits/stdc++.h> using namesp ...
- JSP的9大内置对象和4打作用域对象
一.9大内置对象 二.4大内置作用域对象
- Vue的双向数据绑定的原理
Vue数据双向绑定的原理就是采用数据劫持结合发布者-订阅者模式,通过object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监 ...
- vue单页应用中根据不同城市不同业务添加百度统计代码
问题描述: 我们知道一般的百度统计代码是添加在html的head里的:但是,因为目前项目是用vue开发的单页应用,所以在路由跳转之间不会刷新页面, 统计代码如果放在项目里的index.heml的hea ...
- Solr IK分词器配置
下载地址:https://search.maven.org/search?q=com.github.magese 分词器配置: 参考:https://www.cnblogs.com/mengjinlu ...
- poj 1543 Perfect Cubes (暴搜)
Perfect Cubes Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 15302 Accepted: 7936 De ...