打开文件对话框和文件拖曳功能

打开文件对话框和文件拖曳功能

打开文件对话框

生成一个编辑框控件绑定变量m_szPath,一个按钮控件添加事件OnBnClickedButtonBrowse()。

void CMFC06FileBrowseDlg::OnBnClickedButtonBrowse()
{
    // TODO: 在此添加控件通知处理程序代码
    // 过滤器
    static TCHAR BASED_CODE szFilter[] = _T("JPG (*.jpg)|*.jpg|")
        _T("BMP文件 (*.bmp)|*.bmp|")
        _T("PNG文件 (*.png)|*.png|")
        /*_T("All Files (*.*)|*.*||")*/;

    CFileDialog Filedlg(TRUE, _T(""), NULL,
        OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
        szFilter, NULL);

    // 弹出对话框
    if (Filedlg.DoModal() != IDOK)
    {
        return;
    }
    // 把获取的路径更新到对话框里
    m_szPath = Filedlg.GetPathName();

    UpdateData(FALSE);
}

文件拖曳功能

主界面对话框的【属性】-【Accept Files】的值设置为True。

在【属性】里的【消息】面板上有一个叫做【WM_DROPFILES】的属性单击就可以绑定一个函数。



void CMFC06FileBrowseDlg::OnDropFiles(HDROP hDropInfo)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    UINT count;
    TCHAR filePath[MAX_PATH] = { 0 };

    // 判断拖动过来了多少个文件
    count = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);
    // 如果是一个文件
    if (count == 1)
    {
        // 直接赋值
        DragQueryFile(hDropInfo, 0, filePath, sizeof(filePath));
        m_szPath = filePath;
        UpdateData(FALSE);
        DragFinish(hDropInfo);

        CDialog::OnDropFiles(hDropInfo);
        return;

    }
    else
    {
        // 如果不止一个文件就可以挨个显示或者直接赋值到编辑框
        // 这种情况要么就是存在vector里,要么就是显示在ListCtrl里把多个文件列举出来。
        //m_vectorFile.clear();
        for (UINT i = 0; i < count; i++)
        {
            int pathLen = DragQueryFile(hDropInfo, i, filePath, sizeof(filePath));
            m_szPath = filePath;
            //m_vectorFile.push_back(filePath);
            //break;
        }

        UpdateData(FALSE);
        DragFinish(hDropInfo);
    }

    CDialogEx::OnDropFiles(hDropInfo);
}

原文地址:https://www.cnblogs.com/17bdw/p/10353995.html

时间: 2024-10-10 12:25:55

打开文件对话框和文件拖曳功能的相关文章

弹出打开/保存文件对话框 选择文件夹对话框

打开/保存文件对话框: CFileDialog::CFileDialog( BOOL bOpenFileDialog, //为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框 LPCTSTR lpszDefExt = NULL, //默认的文件扩展名 LPCTSTR lpszFileName = NULL, //默认的文件名 DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, //设定风格 LPCTSTR lpszFilt

python利用文件对话框获取文件路径

一.单文件 python3: 1 import tkinter as tk 2 from tkinter import filedialog 3 4 root = tk.Tk() 5 root.withdraw() 6 7 file_path = filedialog.askopenfilename() python2: 1 import Tkinter, tkFileDialog 2 3 root = Tkinter.Tk() 4 root.withdraw() 5 6 file_path =

VS2010/MFC对话框:文件对话框

文件对话框 上一讲介绍的是消息对话框,本节讲解文件对话框.文件对话框也是很常用的一类对话框. 文件对话框的分类       文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见到这两种文件对话框.例如,很多编辑软件像记事本等都有“打开”选项,选择“打开”后会弹出一个对话框,让我们选择要打开文件的路径,这个对话框就是打开文件对话框:除了“打开”选项一般还会有“另存为”选项,选择“另存为”后往往也会有一个对话框弹出,让我们选择保存路径,这就是保存文件对话框. 正如上面举

Winform控件:打开文件对话框(OpenFileDialog)

OpenFileDialog类提供了用户打开文件的功能,它有如下属性: 属性 InitialDirectory:设置对话框的初始目录. Filter: 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*". FilterIndex: 在对话框中选择的文件筛选器的索引,如果选第一项就设为1. RestoreDirectory: 控制对话框在关闭之前是否恢复当前目录. FileName:第一个在对话框中显示的文件或最后一个选取的文件. T

C# 系统应用之ListView控件 (三).添加ContextMenuStrip右键菜单打开文件和删除文件功能

在前面讲述过使用TreeView控件和ListView控件显示磁盘目录信息,但仅仅是显示信息是不够的,我们还需要具体的操作.在"个人电脑使用历史痕迹"项目中我还需要添加"打开文件"和"删除文件"两种方法.具体如下: 在第一篇文章"C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标"中显示如下: http://blog.csdn.net/eastmount/article/details/1945310

java中文件保存、打开文件对话框

1 package com.soft.test; 2 3 //AWT: FileDialog类 + FilenameFilter类 可以实现本功能 4 //Swing: JFileChooser类 + FileFilter类 可以实现本功能 5 // 6 //该类用来测试打开文件和保存文件的对话框 7 8 import java.awt.*; //为了使用布局管理器 9 import java.awt.event.*;//用来处理事件 10 import javax.swing.*; //最新的

Qt打开文件对话框

项目中需要打开文件对话框,就查了一下,不得不说Qt的帮助文档做的真好,非常详细.要实现这个功能有两种方式,使用QFileDialog的静态方法,实例化QFileDialog对象. 基本算是照抄帮助文档了.下面是自己的代码. 1 // 单击文件按钮 2 void FirstDialog::on_pushButtonFile_clicked() 3 { 4 QString strFile = QFileDialog::getOpenFileName( 5 this, 6 tr("打开文件"

WPF 打开文件 打开路径对话框

WPF调用WinForm中的 OpenFileDialog 和 FolderBrowserDialog 来实现响应的功能 对应的引用程序集: using System.Windows.Forms; OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Title = "选择文件"; openFileDialog.Filter = "zip文件|*.zip|rar文件|*.rar|所有文件|*.

如何找到文件的家-打开文件对话框openFileDialog

private void button1_Click(object sender, EventArgs e) { openFileDialog1.Filter = "*.txt|*.txt";//设置文件 DialogResult dr = openFileDialog1.ShowDialog();//显示打开文件对话框 if (dr ==DialogResult.OK) { richTextBox1.Text = System.IO.File.ReadAllText(openFile