设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

膜结构车棚
膜结构车棚膜结构资质国产膜材 膜结构网中国膜结构协会
查看: 154|回复: 0

VC MFC 使用对话框里面打开多个文件并和CFILE一起使用

[复制链接]
  • TA的每日心情
    开心
    2021-6-19 14:40
  • 签到天数: 1539 天

    [LV.Master]伴坛终老

    发表于 2020-12-29 14:16 | 显示全部楼层 |阅读模式
    1. 我在使用的时候,用一个数组开辟一个大的空间,保存文件的路径,然后在其他地方使用CVLOADIMAGE来载入图片,但是也可以使用CFileDialog的一个成员变量中取出。使用中出现的问题有

    2. 1.在对话框的m_ofn的设置的时候

    3. dlg.m_ofn.Flags=OFN_ALLOWMULTISELECT|OFN_EXPLORER|OFN_ENABLEHOOK;//改变对话框的样式,注意的是最后一个OFN_ENABLEHOOK必须加上去

    4. 不然就会出错了

    5. 2.空间的开辟足够大以及初始化为空





    6. 在MFC中使用CFile类和CFileDialog可以很简单的载入和保存文件……

    7. CFileDialog文件选择对话框的使用:
    8. 首先构造一个对象并提供相应的参数,构造函数原型如下:
    9. CFileDialog::CFileDialog(
    10. BOOL bOpenFileDialog, //为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框
    11. LPCTSTR lpszDefExt = NULL, //默认的文件扩展名
    12. LPCTSTR lpszFileName = NULL, //默认的文件名
    13. DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, //设定风格
    14. LPCTSTR lpszFilter = NULL, //列出可供选择的文件类型和相应的扩展名
    15. CWnd* pParentWnd = NULL //父窗口句柄指针
    16. );

    17. LPCTSTR lpszFilter 参数格式如:"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc;*.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。

    18. 创建文件对话框可以使用DoModal(),在返回后可以利用下面的函数得到用户选择:
    19. CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目录名和扩展名如:c:\test\test1.txt
    20. CString CFileDialog::GetFileName( ) 得到完整的文件名,包括扩展名如:test1.txt
    21. CString CFileDialog::GetExtName( ) 得到完整的文件扩展名,如:txt
    22. CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目录名和扩展名如:test1
    23. POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置。
    24. CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。

    25. 下面是实现代码:
    26. //打开文件
    27. //创建文件名缓存(fileBuffer)和文件读取缓存(rBuffer)
    28. //此处如果不把缓存置0,在后面的设定中就会出错,如果是动态申请的,请用memset或者for循环把数组清零
    29. char fileBuffer[5010] = {0}, rBuffer[5010] = {0};
    30. int rBSize;
    31. //定义一个CFile类,用来处理文件
    32. CFile in;
    33. //定义一个CFileDialog类,用来显示标准的打开文件对话框
    34. CFileDialog inDlg(FALSE, NULL, NULL, NULL, _T("自定义文件类型 (*.xxx)|*.xxx|所有文件 (*.*)|*.*||"), NULL);
    35. inDlg.m_ofn.lpstrTitle = _T("打开自定义文件");
    36. //设定一个文件名缓存,因为CFileDialog内置的文件名缓存长度只有200,但是很多时候,文件的路径远大于这个数,为了保险起见,所以要自己设定一个文件名缓存
    37. inDlg.m_ofn.lpstrFile = fileBuffer;
    38. //设定缓存长度
    39. inDlg.m_ofn.nMaxFile = 5000;
    40. //显示对话框,并处理按了确定按钮的事件
    41. if(inDlg.DoModal() == IDOK) {
    42. //以只读方式打开文件
    43. if(in.Open(inDlg.GetPathName(), CFile::modeRead)) {
    44.   //得到文件长度,从而确定读取缓存的大小
    45.   rBSize = in.GetLength();
    46.   //避免数组越界,当然在这里也可以动态申请缓存空间
    47.   if(rBSize > 5000) rBSize = 5000;
    48.   //读入数据
    49.   n.Read(rBuffer, rBSize);
    50.   //关闭文件
    51.   in.Close();
    52.   MessageBox("打开文件成功", "搞定了", MB_ICONEXCLAMATION | MB_OK);
    53. } else {
    54.   MessageBox("打开文件失败", "失败了", MB_ICONSTOP | MB_OK);
    55. }
    56. }

    57. //保存文件
    58. //创建文件名缓存(fileBuffer)和文件写入缓存(wBuffer)
    59. //此处如果不把缓存置0,在后面的设定中就会出错,如果是动态申请的,请用memset或者for循环把数组清零
    60. char fileBuffer[5010] = {0}, wBuffer[5010] = {0};
    61. int wBSize;
    62. CFile out;
    63. CFileDialog outDlg(FALSE, NULL, NULL, NULL, _T("自定义文件类型 (*.xxx)|*.xxx|所有文件 (*.*)|*.*||"), NULL);
    64. //设定保存对话框标题
    65. outDlg.m_ofn.lpstrTitle = _T("保存自定义文件");
    66. //使用自定义的文件名缓存
    67. outDlg.m_ofn.lpstrFile = fileBuffer;
    68. //设定保存文件的默认后缀,如果自己有输入后缀,则时候输入的后缀
    69. outDlg.m_ofn.lpstrDefExt = "xxx";
    70. //设定缓存大小
    71. outDlg.m_ofn.nMaxFile = 5000;
    72. //显示对话框
    73. if(outDlg.DoModal() == IDOK) {
    74. //得到文件名,并用创建和写入方式打开
    75. if(out.Open(outDlg.GetPathName(), CFile::modeWrite | CFile::modeCreate)) {
    76.   //在这里把你要写入文件的内容写入缓存,如果写入的内容过长,可以分次写入
    77.   //得到写入当前缓存中内容的长度
    78.   wBSize = strlen(wBuffer);
    79.   //写入文件
    80.   out.Write(wBuffer, wBSize);
    81.   //关闭文件
    82.   out.Close();
    83.   MessageBox("保存文件成功", "搞定了", MB_ICONEXCLAMATION | MB_OK);
    84. } else {
    85.   MessageBox("保存文件失败", "失败了", MB_ICONSTOP | MB_OK);
    86. }
    87. }
    复制代码
    回复


    http://www.mjgw.org/ 专业从事膜结构设计、制作加工、施工安装的膜结构工程服务,能够为客户提供专业的膜结构整体解决方案。做中国最好的膜结构综合服务平台。欢迎大家联系电话:198-7840-1958,QQ:463017170.
    相关关键词:膜结构车棚,膜结构车棚覆盖,膜结构车棚公司,膜结构车棚多少钱,膜结构车棚厂家,膜结构车棚价格,社区膜结构车棚,膜结构车棚膜布厂家 ,膜结构车棚哪家好,膜结构车棚多少钱一米,膜结构车棚报价,膜结构车棚哪里有,膜结构车棚定制,膜结构车棚安装,膜结构车棚设计,膜结构车棚电话,膜结构车棚加工,膜结构车棚膜布价格,膜结构车棚批发,膜结构车棚制造商,膜结构车棚生产厂家,膜结构车棚设计,膜结构车棚施工,膜结构车棚多少钱一平米,膜结构车棚订制,张拉膜车棚,张拉膜车棚覆盖,张拉膜车棚公司,张拉膜车棚多少钱,张拉膜车棚厂家,张拉膜车棚价格,社区张拉膜车棚,张拉膜车棚膜布厂家 ,张拉膜车棚哪家好,张拉膜车棚多少钱一米,张拉膜车棚报价,张拉膜车棚哪里有,张拉膜车棚定制,张拉膜车棚安装,张拉膜车棚设计,张拉膜车棚电话,张拉膜车棚加工,张拉膜车棚膜布价格,张拉膜车棚批发,张拉膜车棚制造商,张拉膜车棚生产厂家,张拉膜车棚设计,张拉膜车棚施工,张拉膜车棚多少钱一平米,张拉膜车棚订制,常用膜材品牌:德国杜肯、法国法拉利、德国海德斯、德国米乐、日本平岗、韩国秀博、比利时希运、美国赫虏伯、中国科宝、上海慧遥。

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    推荐膜材品牌上一条 /6 下一条

    进口膜材 国产膜材 pvdf膜材ptfe膜材ETFE膜材
    最好的膜结构公司 一级膜结构资质 膜结构一级资质
    膜结构设计-膜结构十大品牌-etfe设计-充气膜结构
    诺科膜结构
    遨都膜结构设计
    中国膜结构网
    中国空间膜结构

    QQ|申请友链|手机版|中国膜结构论坛