zoukankan      html  css  js  c++  java
  • win32控制台程序使用CfileDialog进行文件读取

    win32控制台程序使用CfileDialog进行文件读取

    示例程序:获取图片读取路径

    int _tmain(int argc, _TCHAR* argv[])
    {
    	//初始化MFC或者设置资源句柄(否则下面使用MFC库会断言出错)                        
    	//AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0);         //(1)
    	AfxSetResourceHandle(GetModuleHandle(NULL));                                //(2)
    
    	//打开图片
    	CFileDialog dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR);
    	dlg.m_ofn.lpstrTitle = _T("选择需要投影的图像");
    	dlg.m_ofn.lpstrFilter = _T("BMP*.bmpAll Files*.*");
    	TCHAR filename[10000] = { 0 };
    	dlg.m_ofn.lpstrFile = filename;
    	dlg.m_ofn.nMaxFile = 10000;
    	if (dlg.DoModal() != IDOK)
    	{
    		AfxMessageBox(_T("打开图像失败!"));
    		return 1;
    	}
    
    	//获取文件路径
    	vector<CStringA> imagePath;
    	POSITION pos = dlg.GetStartPosition();
    	while (pos)
    	{
        #ifdef UNICODE
    		USES_CONVERSION;
    		//文件选择顺序A,B,C,D;文件获取顺序D,A,B,C
    		imagePath.push_back(T2A(dlg.GetNextPathName(pos)));
        #else
    		imagePath.push_back(dlg.GetNextPathName(pos));
        #endif
    	}
    }
    

    注意事项:
      (1) 头文件:"afxdlgs.h";
      (2) CfileDialog是MFC中的,需要资源模块句柄,否则会运行报错:ASSERT(afxCurrentResourceHandle != NULL)
      解决方法:
        (a)法一:使用CFiledialog前进行MFC资源初始化,如语句(1);
        (b)法二:使用语句(2)设置程序目前要使用的资源模块句柄;
      (3) 程序的运行库(属性->配置属性->常规->MFC使用)以及MFC使用(属性->配置属性->C/C++->代码生成->运行库)必须对应。"多线程DLL(MD)"(调试则为"多线程调试DLL(MDd)")对应"在共享DLL中使用MFC","多线程(MT)"(调试则为"多线程调试(MTd)")对应"在静态库中使用MFC"。
      否则会报错:fatal error C1189;
      (4)注意(3)中运行库中的设置与Debug版本和Release版本相关,如果设置错可能会导致程序出问题。如我在Release版本设置为"多线程调试DLL(MDd)"时,导致我调用的opencv中人脸识别代码执行结果出问题。

    补充:如果字符集设置为"使用多字节字符集"时,编译报错:error MSB8031: Building an MFC project for a non-Unicode character set is deprecated.
      原因:没有MBCS字符集,需要下载安装MBCS字符集。
      VS2013版本MBCS字符集下载地址,其他版本可以再网站上搜索。

  • 相关阅读:
    JAVA相关基础的知识吧
    Java测试调用.net 接口服务
    Java测试内存信息
    Java测试普通Java接口记录-TestHrmInterface
    那些年学不会的操作(写法/...)——记录一些靠搜索做过但总是记不住的东西
    正确的sybase批量插入语法
    新ZJJG项目相关接口开发记录-微信制证组成浅析
    bip项目的启用/调试+ 问题记录
    记录数组问题
    模糊匹配的查询条件/ 给下拉框加提示呢
  • 原文地址:https://www.cnblogs.com/silentteen/p/8034627.html
Copyright © 2011-2022 走看看