zoukankan      html  css  js  c++  java
  • VC++使用GetOpenFileName选择文件

    • 版本

    VS2013

    实例说明

    通过对话框选择要打开的文件,可以使用CFileDialog构造函数,也可以使用API函数GetOpenFileName。

    本实例使用GetOpenFileName函数选择文件。程序运行效果如图所示。

    • 界面

    • 关键技术

    GetOpenFileName函数用于创建一个Open公共对话框,使用户指定驱动器、目录和文件名,或使用户打开文件。

    基本格式如下:

    BOOL  GetOpenFileName(LPOPENFILENAME lpofn);

    参数说明:

    lpofn:指向包含初始化对话框的信息的一个OPENFILENAME结构。当OpenFileName函数返回时,此结构包含有关用户选择的信息。

    返回值:如果用户指定了一个文件名,单击OK按钮,返回值为非0。由OPENFILENAME结构的lpstrFile成员指向的缓冲区含有全路径和用户指定的文件名。如果用户取消或关闭Open对话框或错误出现,返回值为0.

    OPENFILENAME结构如下:

        typedef struct tagOFN {
            DWORD        lStructSize;        //指定这个结构的大小
            HWND         hwndOwner;            //对话框窗口句柄
            HINSTANCE    hInstance;
            LPCWSTR      lpstrFilter;        //过滤器
            LPWSTR       lpstrCustomFilter;    //过滤器样式
            DWORD        nMaxCustFilter;    //lpstrCustomFilter缓冲区大小
            DWORD        nFilterIndex;        //当前选择的过滤器的索引
            LPWSTR       lpstrFile;            //文件名
            DWORD        nMaxFile;            //lpstrFile缓冲的大小
            LPWSTR       lpstrFileTitle;    //文件名和扩展名的缓冲
            DWORD        nMaxFileTitle;        //lpstrFileTitle缓冲的大小
            LPCWSTR      lpstrInitialDir;    //初始目录
            LPCWSTR      lpstrTitle;        //对话框标题
            DWORD        Flags;                //位标记
            WORD         nFileOffset;        //偏移
            WORD         nFileExtension;    //扩展名起始位置
            LPCWSTR      lpstrDefExt;        //默认扩展名
            LPARAM       lCustData;            //应用程序定义的数据
            LPOFNHOOKPROC lpfnHook;            //钩子
            LPCWSTR      lpTemplateName;    //对话框模板资源名
        }OPENFILENAME;
    • 设计过程

    (1)新建一个基于对话框的应用程序

    (2)向窗体中添加一个按钮控件,关联响应函数OnOpen

    (3)主要代码如下:

    void CDemoDlg::OnOpen()
    {
        // TODO:  在此添加控件通知处理程序代码
    
        OPENFILENAME ofn;
        char* filter = "doc*.docxls*.xlsppt*.pptall*.*";
        ZeroMemory(&ofn,sizeof(ofn));
        ofn.lStructSize = sizeof(ofn);
        ofn.hwndOwner = this->GetSafeHwnd();
        ofn.lpstrFilter = filter;//文件过滤器
        ofn.lpstrCustomFilter = NULL;
        ofn.nFilterIndex = 0;
        char filename[128];
        filename[0] = '';
        ofn.lpstrFile = filename;
        ofn.nMaxFile = 128;
        ofn.lpstrFileTitle = NULL;
        ofn.lpstrInitialDir = NULL;//初始路径
        ofn.lpstrTitle = "打开文件";
        ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_PATHMUSTEXIST;
        ofn.lpstrDefExt = NULL;
        if (GetOpenFileName(&ofn) == IDOK)
        {
            MessageBox(filename, "选中的文件是", MB_OK);
        }
    
    }
    • 演示

    Caesar卢尚宇

    2021年2月6日

    作者: 阿飞

    出处: https://www.cnblogs.com/nxopen2018/>

    关于作者:......

    如有问题, 可在底部(留言)咨询.

  • 相关阅读:
    基于SpringMVC框架使用ECharts3.0实现堆叠条形图的绘制(下篇)
    使用Poi对EXCLE的导入导出
    使用JXL对EXCLE的导入导出
    在线API
    Java中使用poi导入、导出Excel
    SpringMVC框架下使用jfreechart绘制折线图,柱状图,饼状图
    让div在屏幕中居中(水平居中+垂直居中)的几种方法
    如何使用Canvas及动画实现
    $state、$watch、$scope、$rootScope分别是什么?
    【修真院“善良”系列之三】技术面试的时候该怎么样介绍自己?
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/14383118.html
Copyright © 2011-2022 走看看