请教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;
...全文
458 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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也不行。
内容概要:本文详细探讨了机组组合优化模型的构建,旨在通过合理安排各类发电机组的启停计划和优化出力分配,实现电力系统在经济性和稳定性上的最佳平衡。文章首先介绍了电力系统的四大主要组件——传统火电机组、风电机组、光伏机组和储能系统的参数及运行特性。接着,围绕最小化系统总运行成本这一目标,设计了优化目标函数,并明确了包括功率平衡约束、机组出力上下限约束、风光发电功率约束、弃风弃光约束、爬坡速率约束、储能系统荷电状态约束、充放电功率约束和充放电互斥约束在内的多项约束条件。最后,文章列出了求解机组组合优化模型所需的关键变量,如传统机组的开停状态、机组出力、启停成本、风电光伏实际出力、弃风弃光比例及储能系统的充放电功率和荷电状态,以实现系统的经济调度和可再生能源的最大化利用。 适合人群:从事电力系统研究、规划和调度工作的工程师和技术人员,以及对电力系统优化感兴趣的科研人员。 使用场景及目标:①帮助电力系统工程师理解不同类型发电机组的特点及其对系统稳定性、经济性和环保性的影响;②为制定合理的电力系统调度策略提供理论依据和技术支持;③促进可再生能源的有效整合,提高电力系统的灵活性和可靠性。 其他说明:本文提供的模型和方法不仅适用于当前的电力系统,也可为未来含高比例可再生能源接入的电力系统提供参考。文中涉及的具体数学公式和参数设定为实际应用提供了详细的指导,有助于提升电力系统的运行效率和经济效益。

7,660

社区成员

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

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