让程序支持文件拖拽

 

将文件拖拽给当前的程序,然后程序打开。

其实原理比较简单,就是当你拖动文件到窗口的再放下的时候,程序记录下这些文件的文件名,然后进行处理。

 

拖动文件到某个窗口,则windows会发送一个属于该窗口对应程序的WM_DROPFILES消息来到消息队列。

 

我们在程序中接到这个消息后,就可以进行处理了。

 

在MFC中,这些都已经做好,我们只需要找到消息,然后添加ON_WM_DROPFILES()即可。

不过要注意的是,如果要使用拖拽,窗口必须设置成允许拖拽。

所以我们必须在初始化对话框的时候,加上下面的语句。

 

1.设置窗口允许接受拖动的文件

BOOL Qinglong_APPDlg::OnInitDialog() { //…… // TODO: 在此添加额外的初始化代码 DragAcceptFiles (TRUE); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } 

 

2.处理拖动的文件

void Qinglong_APPDlg::OnDropFiles(HDROP hDropInfo) { // 1.定义字符串,存放文件名 TCHAR file_name[_MAX_PATH]; // 2. 激活当前窗口 SetActiveWindow(); // 3. 获取拖拽的文件或文件夹个数 UINT files = ::DragQueryFile (hDropInfo, (UINT)-1, NULL, 0); // 4. 遍历所有文件,并显示文件名称 for ( UINT i = 0; i < files; i++ ) { ::DragQueryFile (hDropInfo, i, file_name, _MAX_PATH); AfxMessageBox( file_name ); } // 5. 结束拖拽 ::DragFinish (hDropInfo); } 

 

你可能感兴趣的:(windows程序设计,file,path,mfc,windows,null)