请教Windows Mobile 的CFileDialog问题。

zhuyf87 2012-12-01 10:37:50
采用CFileDialog或者GetOpenFileNameEx,想让用户选择他想打开的文件。
之前程序在WinCE系统上工作没有问题,现在移植到Windows Mobile系统上。
出现的问题是,弹出的选择对话框无法识别zip文件,即使我文件过滤用*.*,
也无法显示出zip压缩文件。但是我用系统的资源管理器,进入到相应文件夹下,
是可以看到这个压缩文件的。请教大家,这个问题如何解决。代码如下:

CString zip_file_path;

CFileDialog file_dialog(TRUE, NULL, NULL, NULL, TEXT("*.zip|*.zip||"));
if (file_dialog.DoModal() != IDOK)
return;

zip_file_path = file_dialog.GetPathName();


或者

	
OPENFILENAMEEX ofn = {0};
TCHAR szFile[MAX_PATH] = {0};

ofn.lStructSize = sizeof(ofn);
ofn.lpstrFilter = _T("ZIP Files (*.*)/0*.*/0");
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile)/sizeof(szFile[0]);
ofn.lpstrInitialDir = _T("\\DOWNLOAD");
ofn.lpstrTitle = _T("选择数据文件");
ofn.ExFlags = OFN_EXFLAG_THUMBNAILVIEW | OFN_EXFLAG_HIDEDRMPROTECTED;
GetOpenFileNameEx(&ofn);

CString strFileName = ofn.lpstrFile;
...全文
511 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyf87 2012-12-03
  • 打赏
  • 举报
回复
引用 2 楼 dzq138 的回复:
重写了这个玩意~~ 花了不少时间去重写...
能否分享一下 -_-
dzq138 2012-12-03
  • 打赏
  • 举报
回复
重写了这个玩意~~ 花了不少时间去重写...
dzq138 2012-12-03
  • 打赏
  • 举报
回复
就是全部枚举文件,并过滤,自己对字符串查找. 参考下面的代码:

void CDZQOPENFILEDLG::doFileEnumeration()
{	//枚举文件夹的内容
	HANDLE hSearch;                // FindFirstFile函数返回的句柄
	WIN32_FIND_DATA  fd;           // 文件的数据结构
	BOOL bFinished = FALSE;        // 循环结束标志
	//TCHAR *szFname = TEXT("\\*");  // 要查找的文件名
	LPSYSTEMTIME filetime;
	SYSTEMTIME   systime;   
	FILETIME   localtime;
	CString szFname;
	CString sFileName;
	CString sFileExe;
	LVITEM li;
	li.iItem=5000;
	li.mask=LVIF_TEXT;
	int iItem;
	
	int i;
	i=m_ListView.GetItemCount();
	while(i>1)
	{//因为最后一行不能删除,所在要先判断是否大于一才执行.
		i--;
		m_ListView.DeleteItem(i);//删除内容
	}
	if (L"\\" == m_Path)
	{
		szFname= m_Path + L"*";
	}
	else
	{
		szFname= m_Path + L"\\*";
	}
	//先加入文件夹
	
	hSearch = FindFirstFile(szFname, &fd);
	if (hSearch == INVALID_HANDLE_VALUE)
	{  	//没找到,返回
		return;
	}
	bFinished=false;
	do 
	{
		if (  (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )
		{//是文件夹
			li.pszText=fd.cFileName;
			li.iSubItem=0;
			iItem= m_ListView.InsertItem(&li); 
			m_ListView.SetItemText (iItem,1,L"文件夹"); 
			FileTimeToLocalFileTime(&fd.ftLastWriteTime,&localtime);   
			FileTimeToSystemTime(&localtime,&systime);   //最后修改日期  
			sFileExe.Format( L"%d/%d/%d %d:%d:%d",systime.wYear,systime.wMonth,systime.wDay ,systime.wHour ,systime.wMinute,systime.wSecond );  
			m_ListView.SetItemText (iItem,2,sFileExe); 
		}
		if (!FindNextFile (hSearch, &fd))
		{	//已经查找到最后一个文件,置结束标志
			bFinished = TRUE;
		}
	} while (!bFinished);

	for (i=0 ;i<m_CFileType[m_iType].iTypeNum ;i++)
	{
		if (L"\\" == m_Path)
		{
			szFname= m_Path + m_CFileType[m_iType].sTypeValue[i]; 
		}
		else
		{
			szFname= m_Path + L"\\" + m_CFileType[m_iType].sTypeValue[i]; 
		}
		// 确认是否有文件存在.
		hSearch = FindFirstFile(szFname, &fd);
		if (hSearch == INVALID_HANDLE_VALUE)
		{  	//没找到,返回
			return;
		}
		bFinished=false;
		do 
		{ 
			if (  (fd.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY) )
			{//是文件
				sFileName=fd.cFileName;
				
				if ( -1 ==SearchPos(sFileName,sFileExe,L"."))
				{
					sFileExe="";
				}
				li.iSubItem=0;
				li.pszText=sFileExe.GetBuffer(0) ;
				iItem= m_ListView.InsertItem(&li); 
				m_ListView.SetItemText (iItem,1,sFileName); 
				FileTimeToLocalFileTime(&fd.ftLastWriteTime,&localtime);   
				FileTimeToSystemTime(&localtime,&systime);   //最后修改日期  
				sFileExe.Format( L"%d/%d/%d %d:%d:%d",systime.wYear,systime.wMonth,systime.wDay ,systime.wHour ,systime.wMinute,systime.wSecond );  
				m_ListView.SetItemText (iItem,2,sFileExe); 
				//CString   arrivetime=2005年1月5日10时10分10秒   
				//int   year,month,day,hour,min,second;   
				//sscanf(arrivetime,"%d年%d月%d日%d时%d分%d秒",&year,&month,&day,&hour,&min,&second);
				
			}
			if (!FindNextFile (hSearch, &fd))
			{	//已经查找到最后一个文件,置结束标志
				bFinished = TRUE;
			}
		} while (!bFinished);
	}
	FindClose (hSearch);  // 关闭句柄.
	
}


zhuyf87 2012-12-01
  • 打赏
  • 举报
回复
把ofn.ExFlags = OFN_EXFLAG_THUMBNAILVIEW | OFN_EXFLAG_HIDEDRMPROTECTED;注释掉也不行 我现在发现.dat、.exe、.txt等文件都显示不出来,只能显示图片.bmp的文件。 我发现采用GetOpenFileNameEx可能不行,MSDN里面说到:This function creates a system-defined dialog box that shows a grid of thumbnails, enabling the user to choose a picture or video. 不清楚为什么CFileDialog也不行。
内容概要:本文档聚焦于通信系统中的调制解调技术与Turbo码的结合应用,系统研究了GMSK调制的二比特差分解调方法,以及Turbo码分别与BPSK、GMSK调制方式联合使用的系统性能。通过Matlab平台实现了完整的通信链路仿真,涵盖信号调制、信道编码、解调解码及误码率分析等关键环节,深入探讨了不同调制体制下Turbo编码系统的抗干扰能力与频谱效率表现。研究不仅提供了算法实现代码,还包含了详细的性能对比分析,有助于理解现代数字通信中高效编码调制技术的设计原理与工程实现。此外,文档附带多个相关科研方向的仿真案例,展现出广泛的技术延展性与实际应用价值。; 适合人群:具备通信原理、数字信号处理等相关基础知识,熟悉Matlab编程环境,正在从事无线通信系统仿真、信道编码理论研究或相关领域科研工作的研究生、高校教师及工程技术研究人员。; 使用场景及目标:①深入掌握GMSK调制与Turbo码相结合的技术机制,理解其在提高通信可靠性与频谱利用率方面的优势;②熟练运用Matlab构建完整的数字通信仿真系统,完成从调制编码到解调译码的全流程建模与性能评估;③为无人机通信、卫星通信、移动通信等实际应用场景下的高可靠传输系统设计提供理论支持与算法参考。; 阅读建议:建议结合所提供的Matlab代码逐模块运行与调试,重点关注GMSK差分解调过程与Turbo译码的迭代收敛特性,同时可参考文档中列出的其他研究课题拓展仿真范围,提升综合科研与工程实践能力。
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 标题中所指的"RS485转USB驱动"是一种硬件接口转换技术,其功能在于将传统的RS485通信协议转换为USB接口形式,从而使得现代计算机或设备能够便捷地与采用RS485协议的设备展开通信。RS485作为一种在工业控制、远程通信及多点系统中得到普遍应用的串行通信标准,具备传输距离长、抗干扰性能优异等显著优势。文中提及的型号(CH340、CH341、FT232RL、PL2303、Y-105)是几种常见的USB至UART(通用异步接收发送器)桥接芯片,它们在USB接口与RS485网络之间充当转换媒介的角色。这些芯片赋予USB通信能力,使得计算机可以通过USB接口与RS485网络中的设备执行数据交换。 1. CH340/CH341:这些由韦东山科技研制的USB转串口芯片,常被用于构建低成本的USB转串口适配器。它们提供从USB到UART的转换功能,支持多种波特率的设定,并且在Windows操作系统环境下通常需要安装相应的驱动程序方可正常运作。 2. FT232RL:FTDI公司推出的一款高性能且低功耗的USB到UART桥接器。FT232RL配备全速USB 1.1接口,支持多种串行接口模式,在数据通信、工业控制等领域能够得到广泛应用。同样地,采用FT232RL的设备在连接至电脑时也需要安装对应的驱动程序。 3. PL2303:硅光电子(Prolific)公司所生产的产品,亦是一种常用的USB到UART桥接芯片。它展现出良好的兼容性以及广泛的驱动程序支持,适用于各类USB至串口的应用场景。 4. Y-105:这可能是一款特定的RS485转USB转换模块,或许集成了上述其中一种或多种转换...

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧