昨天,TG说要写一个保存图片的操作。虽然Halcon里提供了保存图片的函数write_image(Image : : Format,FillColor,FileName : )  但是仅依靠这个函数是无法实现界面友好的。因此要做出一个具有windows风格的保存操作,还是得使用MFC的东西。

CFileDialog类封装了Windows常用的文件对话框。常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存盘对话框功能。

Header: afxdlgs.h

CFileDialog::CFileDialog
(
BOOL bOpenFileDialog,                                                \\TRUE则显示打开文件对话框,FALSE则显示保存文件对话框。
LPCTSTR lpszDefExt = NULL,                                     \\指定默认的文件扩展名。
LPCTSTR lpszFileName = NULL,                                 \\指定默认的文件名, 可带上完整的文件路径_T("D:\\Visual Studio 2015\\Projects\\OpenCamHalcon\\MyPic.bmp")
DWORD dwFlags = OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,      \\指明一些特定风格。
LPCTSTR lpszFilter = NULL,                                         \\指明可供选择的文件类型和相应的扩展名。
CWnd* pParentWnd = NULL                                          \\为父窗口指针。
);
要完成write_image,还需要的参数 Format,FileName如何获取呢?

CFileDialog::GetFileExt()返回选定文件的扩展文件名

CFileDialog::GetFileName()返回选定文件的文件名

注意到write_image(ImageReduced1, "bmp", 0, "F:/视觉培训/机器视觉第1课/2.bmp");

LIntExport Herror write_image(const Halcon::Hobject &Image, const char *Format, Hlong FillColor, const char *FileName);

问题来了

1、路径中“\\”与"/"替换;      fileName.Replace(L"\\",L"/");

2、LPCTSTR与Char的转换;     char *file = T2A(fileName);

void COpenCamHalconDlg::OnBnClickedButtonSavePic()
{// TODO: 在此添加控件通知处理程序代码CString str;BOOL isOpen = FALSE;        //是否打开(否则为保存)  CString defaultDir = _T("D:\\Visual Studio 2015\\Projects\\OpenCamHalcon");   //默认打开的文件路径  CString fileName = L"test.bmp";         //默认打开的文件名  CString filter = L"位图(*.bmp)|*.bmp|jpg(*.jpg)|*.jpg||";   //文件过虑的类型  CFileDialog openFileDlg(isOpen,NULL, defaultDir+ "\\" +fileName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filter, NULL);INT_PTR result = openFileDlg.DoModal();if (result == IDOK) { fileName = openFileDlg.GetPathName();fileName.Replace(L"\\",L"/");switch (openFileDlg.m_ofn.nFilterIndex){case 1:filter = L"bmp";break;case 2:filter = L"jpeg";}USES_CONVERSION;char *file = T2A(fileName);char *filterCH = T2A(filter);   write_image(Image, filterCH, 0, file);}
}

MFC CFileDialog使用相关推荐

  1. MFC CFileDialog使用整理

    MFC CFileDialog使用整理 1.CFileDialog构造函数 CFileDialog:CFileDialog(BOOL     bOpenFileDialog,  LPCTSTR     ...

  2. MFC CFileDialog 相对路径

    1)在mfc中想按照自己设定的路径来打开fileDialog,其实CFileDialog有自己的变量 m_ofn,该变量为OPENFILENAME的结构体,用户可自己定义一些内容 例如 打开窗体的名字 ...

  3. 使用c++进行Windows编程中各种操作文件的方法 【转】

    https://www.zhaokeli.com/article/8232.html 使用c++进行Windows编程中各种操作文件的方法 [转] 来源:赵克立博客 分类: C/C++ 标签:--发布 ...

  4. VC++图像存取总结

    使用GDI+的MFC应用程序的文件打开和保存对话框 文章概要:CGdiplusFileOpenDialog和CGdiplusFileSaveAsDialog类提供了一个 在GDI+的MFC应用程序轻松 ...

  5. Windows编程中各种操作文件的方法

    windows编程中文件操作有以下几种常见方法: 1.C语言中文件操作. 2.C++语言中的文件操作. 3.Win32 API函数文件操作. 4.MFC CFile类文件操作. 5.MFC CFile ...

  6. MFC中利用CFileDialog选择文件并读取文件所遇到的问题和解决方法

    在用MFC编写一个上位机时,需要实现选择和读取一个二进制文件,本来以为很简单的但是在实现过程中遇到很多问题,所幸都一一解决,这里做一下记录. 首先在实现文件选择,在界面上设置一个按钮,并在点击事件函数 ...

  7. MFC调用CFileDialog之后目录居然会改变,调试了好久终于发现是这个问题

    MFC调用CFileDialog之后目录居然会改变,调试了好久终于发现是这个问题,上网搜了下,发现也有人和我出现相同的问题.他的博客如下: http://www.programlife.net/cur ...

  8. mfc 监控文件操作_实战经验:使用CFileDialog实现多个文件选择

    问题 最近需要实现文件选择的功能,要求是需要弹出系统标准的文件选择对话框,另外,允许用户选择多个文件. 解决方法 MFC中有一个类CFileDialog就是用来做这件事的,而且功能还挺丰富,今天只是使 ...

  9. MFC中的几个常用类——CFileDialog

    2019独角兽企业重金招聘Python工程师标准>>> 1 简介 CFileDialog类封装了Windows常用的文件对话框.常用的文件对话框提供了一种简单的与Windows标准相 ...

最新文章

  1. 2019手机浏览器排名_浏览器排行榜2019年1月浏览器市场份额排名
  2. toolkit,phonetextbox中实现用户按回车键会换行
  3. leetcode算法题--完美数
  4. mysql连接报错Access denied for user ‘root‘@‘localhost‘
  5. Apache Flink 简介和编程模型
  6. 清华大学计算机毕业论文,清华大学毕业论文撰写要求
  7. 【mysql】安装 mysql 5.7 完成后,默认密码是啥?怎么查看默认密码?
  8. python报告 No module named 'main'错误
  9. batchsize大小对训练速度的影响
  10. For input string:
  11. dbcc收缩数据库_使用DBCC SHRINKFILE收缩数据库
  12. 微原创——好用的文章转换工具自媒体利器
  13. Unity3D游戏启动界面常用设置
  14. matlab学习增强学习,使用 MATLAB 和 Simulink 进行强化学习
  15. 扶桑之伤 作者:长铗
  16. 按键精灵html代码,按键精灵代码post和get
  17. word2013无法打开doc文件显示正在受保护视图中打开解决方法
  18. stm32之中断系统
  19. 官方解释:Windows Vista和OpenGL
  20. 802.11ax简要笔记

热门文章

  1. 03 分布式系统的技术栈
  2. readlink 获取进程的绝对路径
  3. 区块链技术之P2P网络(二)
  4. java对称加密与非对称加密
  5. Android性能分析之---卡顿分析
  6. IT必读:OA中如何制作转正申请单
  7. 【Jmeter】jmeter的安装与启动(win10)
  8. 【无标题】删除数组中的重复元素
  9. GICv3软件overview手册之GICv3基本功能(4)
  10. SuperMap地图绘制线段