Welcome

首页 / 软件开发 / VC.NET / Windows界面编程(7) 文件拖拽(文件拖放)

Windows界面编程(7) 文件拖拽(文件拖放)2014-01-09本篇《Windows界面编程第七篇文件拖拽(文件拖放)》来介绍如何为程序添加文件拖拽(文件拖放)操作,文件拖拽(文件拖放)操作可以归类到Windows程序的界面操作,因此也将这篇文章放到Windows界面编程系列中。

文件拖拽(文件拖放)功能能有效提高用户体验,在VC++中要让程序支持文件拖拽功能,主要使用三个函数——DragAcceptFiles,DragQueryFile和DragFinish。下面先来介绍这三个函数(为了更加好学习英语,函数介绍尽可能会使用英语)。

一.DragAcceptFiles

函数功能:Registers whether a window accepts dropped files. An application that calls DragAcceptFiles with the fAccept parameter set to TRUE has identified itself as able to process the WM_DROPFILES message from File Manager.

函数原型:

//By MoreWindows-(http://blog.csdn.net/MoreWindows)

VOIDDragAcceptFiles(

HWNDhWnd,

BOOL fAccept

);

参数说明:

第一个参数hWnd:

The identifier of the window that is registering whether it will accept dropped files.

第二个参数fAccept:

A value that indicates if the window identified by the hWnd parameter accepts dropped files. This value is TRUE to accept dropped files or FALSE to discontinue accepting dropped files.

对于对话框程序,还可以通过选择其Properties->Extended Styles,点选Accept files选项即可。

一.DragQueryFile

函数功能:Retrieves the names of dropped files that result from a successful drag-and-drop operation.

函数原型:

//By MoreWindows-(http://blog.csdn.net/MoreWindows)

UINTDragQueryFile(

HDROPhDrop,

UINT iFile,

LPTSTRlpszFile,

UINTcch

);

参数说明:

第一个参数hDrop:

HDROP标识符,即响应函数中的wParam参数

第二个参数iFile::

待查询的文件索引号,从0开始。可以同时拖拽多个文件,因此就需要一个索引号来进行区分。如果该参数为0xFFFFFFFF,则该函数返回拖拽的文件的个数

第三个参数lpszFile:

用于存放文件名的缓冲区首地址

第四个参数cch:

缓冲区长度

函数返回值:若iFile为0xFFFFFFFF返回拖拽的文件个数,否则返回相应索引号的文件名长度。

第三个DragFinish

函数功能:Releases memory that the system allocated for use in transferring file names to the application.

函数原型:

//By MoreWindows-(http://blog.csdn.net/MoreWindows)

VOIDDragFinish(HDROPhDrop);