windows拖拽文件设置,windows中文件窗口移动时应拖动
这个支持程序的下载地址是:http://download..net/detail/morewindows/5128654.
请注明出处,原地址:http://blog..net/morewindows/article/details/8634451.
欢迎来到http://weibo.com/MoreWindows,微博
前面六篇文章已经介绍了Windows界面编程,内容如下:
1.《Windows界面编程第一篇位图背景与位图画刷》
2.《Windows界面编程第二篇半透明窗体》
3.《Windows界面编程第三篇异形窗体普通版》
4.《Windows界面编程第四篇异形窗体高富帅版》
5.《Windows界面编程第五篇静态控件背景透明化》
6.《Windows界面编程第六篇动画启动效果(动画效果显示及隐藏窗口)》
本文《Windows界面编程第七篇文件拖拽(文件拖放)》介绍如何在程序中添加文件拖放(文件拖放)操作。文件拖放(文件拖放)操作可以归类为Windows程序的界面操作。因此,本文也包含在Windows界面编程系列中。
文件拖拽功能可以有效提升用户体验。在VC中,主要使用——DragAcceptFiles、DragQueryFile和DragFinish三个函数来支持文件拖动功能。先介绍一下这三个功能(为了更好的学习英语,功能会尽量用英文介绍)。
我。拖放对象
函数:当窗口接受放下的文件时注册。在f accept参数设置为true的情况下调用dragaccepted文件的应用程序已经确定自己能够处理来自文件管理器的WM_DROPFILES消息。
功能原型:
//By more windows-(http://blog . . net/more windows)
VOIDDragAcceptFiles(
HWNDhWnd,
布尔接受
);
参数描述:
第一个参数hWnd:
正在注册是否接受丢弃文件的窗口的标识符。
第二个参数fAccept:
一个值,指示由hWnd参数标识的窗口是否接受丢弃的文件。该值为TRUE表示接受丢弃的文件,为FALSE表示停止接受丢弃的文件。
对于对话框程序,您还可以选择其属性-扩展样式,然后单击接受文件选项。
我。拖拽文件
函数:检索由成功的拖放操作产生的被拖放文件的名称。
功能原型:
//By more windows-(http://blog . . net/more windows)
UINTDragQueryFile(
HDROPhDrop,
UINTiFile,
LPTSTRlpszFile,
UINTcch
);
参数描述:
第一个参数hDrop:
HDROP标识符,即响应函数中的wParam参数
第二个参数iFile:
要查询的文件的索引号,从0开始。可以同时拖放多个文件,所以需要一个索引号来区分。如果该参数为0xFFFFFFFF,则该函数返回拖动的文件数。
第三个参数lpszFile:
用于存储文件名的缓冲区的第一个地址。
第四个参数cch:
缓冲长度
函数返回值:如果iFile为0xFFFFFFFF,返回拖动文件的个数;否则,返回对应索引号的文件名长度。
第三次拖拽完成
函数:释放系统分配给应用程序用于传输文件名的内存。
功能原型:
//By more windows-(http://blog . . net/more windows)
voiddragffinish(hdropdrop);
下面是带有详细注释的示例程序代码。(下载地址:http://download..net/detail/morewindows/5128654)
[CPP]查看平面图//文件拖拽ahref= http://博客。。net/更多窗口/文章/详细信息/8634451 http://博客。。net/更多窗口/文章/详细信息/8634451/a//by more windows-(http://博客。。net/更多窗口)/(r)第一步#包括shellapi.h #pragmacomment(lib,“shell 32。lib ")/第二步DragAcceptFiles(hwnd,true);//第三步uintnfilenum=dragqueryfile(hdrop,0 xffffffff,NULL,0);拖曳文件个数//第四步DragQueryFile(hDrop、I、strFileName、MAX_PATH):获得拖曳的文件名# include stdafx。h # include vector # include cstring using mepacestd;//文件拖拽第一步#包括shellapi.h #pragmacomment(lib, shell 32。lib )constcharsz appname[]=文件拖拽_更多窗口(http://博客。。net/更多窗口)’;boolin application(hintanchinss,intncmdshow);lrsultcallbackndproc(hwndhwnd、uintmessage、wparamwparam、LPAR am);intapientrywinnin(hintancehintance,hinstancehprevinstance,LPSTRlpCmdLine,intncmdshow){//全部:placecodehere .msgmsg如果(!init application(hintance,ncmdshow)){ return 0;}while(GetMessage( msg,NULL,0,0)){翻译消息(msg);调度消息(msg);} returnmsg。参数返回0;} boolin application(hint ance,intncmdshow){ hwnd;wndclasswndclasswndcclass。style=cs _ hredraw cs _ vredrawwndclass。lpfnwndproc=wndprocwndclass。cbclsextra=0wndcclass。cbwn德克斯特=0;wndclass。hinstance=0wndcclass。hicon=加载图标(null,idi _ application);wndcclass。hccursor=load cursor(null,IDC_ARROW):wndcclass。hbrberbackground=(hbrush)(color _ window 1);wndcclass。lpsz菜单名称=null:wndcclass。lpsz类名=SZ appname如果(!注册类(wndcclass)){ messagebox(空值,programneedwindowsnt!szAppName、MB_ICONERROR:返回假的;}hwnd=CreateWindow(szAppName、szAppName、ws _ overlappedwindow、CW_USEDEFAULT、CW_USEDEFAULT、CW_USEDEFAULT、NULL、hinstance、NULL);if(hwnd==NULL)返回假的;ShowWindow(hwnd,ncmdshow);更新窗口(hwnd):返回TRUE:} lrsultcallbackndproc(hwndhwnd、uintmessage、wparamwparam、LPAR am){静态向量字符串s _ vetfilenames开关(消息){caseWM_CREATE://文件拖拽第二步dragacceptfilesdragaccept文件(hwnd,true);返回0;//文件拖拽第三步dragqueryfile nddragqueryfilecasewm _ drop files:{ hdrops drop=(hdrop)wparam;uintnfilenum=dragqueryfile(hdrop,0 xffffffff,NULL,0);//拖拽文件个数charstrfilename[max _ path];for(inti=0);我的火柴;(i ){DragQueryFile(hDrop,I,strFileName,max _ path);//获得拖曳的文件名s _文件名。push _ back(strfilename):} drag finish(hdrop);//释放hdroptinvalidect(hwnd,NULL,true);}返回0;案例WM _ paint:{ hdc hdc;绘画构造;矢量字符串:迭代器位置;inti,y;hdc=开始绘制(hwnd,PS);//显示拖拽的文件名y=0for(pos=s _ vetfilenames。begin());准备好了吗?=s _ vetfilenames。end();pos){ text ut(hdc,20,y,pos- c_str()、str len(pos-c _ str());y=30}结束(hwnd,PS);}返回0;case WM _ destroy:post quiet message(0);返回0;} retrnefwindowproc(hwnd、message、wParam、lparam)
运行结果截图如下,在桌面上选取了几个快捷方式然后拖到程序窗口中:
通过本文,可以看出要为程序添加文件拖拽(文件拖放)功能,只要四步即可。
第一步
#包括shellapi.h #pragma注释(lib,“shell32.lib”)
第二步
DragAcceptFiles(hwnd,true);
第三步
uint NFL enum=dragqueryfile(hdrop,0 xffffffff,NULL,0);拖曳文件个数
第四步
DragQueryFile(hDrop、I、strFileName、MAX_PATH):获得拖曳的文件名
欢迎继续参考《Windows界面编程第八篇listbox彩色显示隔行变色》美元
地址是http://博客。。net/更多窗口/文章/详细信息/8656061
本文配套程序下载地址为:http://下载。。net/detail/more windows/5128654
转载请标明出处,原文地址:http://博客。。net/更多窗口/文章/详细信息/8634451
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。