首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教怎么在mfc基于对话框中实现打开文件这个功能

2012-03-23 
请问如何在mfc基于对话框中实现打开文件这个功能?要求:我新建一个button按钮。。然后我点击他就弹出我们平时

请问如何在mfc基于对话框中实现打开文件这个功能?
要求:我新建一个button按钮。。然后我点击他就弹出我们平时打开文件的对话框。。上面有目录。。然后我选择文件(要求txt的)。。然后我读取了这个文件并显示在另一个edit框中。。。。。。。请问怎么实现。。新手刚学mfc。望高手指点。。。请详细说明。。不要给我帖一段代码。。。。谢谢

[解决办法]
简单例子:
CFileDialog dlg( FALSE,NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"JPEG(*.JPG,*.JPE),BMP(*.BMP,*.RLE),TIFF(*.TIF)|*.BMP;*.RLE;*.JPG;JPE;*.TIF;*.TIFF|BMP(*.BMP,*.RLE)|*.BMP;*.RLE|JPEG(*.JPG,*.JPE)|*.JPG;JPE|TIFF(*.TIF)|*.TIF;*.TIFF|*.*| ", NULL );

保 存 : 【仅仅是参数不一样】
CFileDialog dlg(TRUE,NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"JPEG(*.JPG,*.JPE),BMP(*.BMP,*.RLE),TIFF(*.TIF)|*.BMP;*.RLE;*.JPG;JPE;*.TIF;*.TIFF|BMP(*.BMP,*.RLE)|*.BMP;*.RLE|JPEG(*.JPG,*.JPE)|*.JPG;JPE|TIFF(*.TIF)|*.TIF;*.TIFF|*.*| ", NULL );

然后在选择文件后,
CFileDialog-> GetFileName() //或者其他成员方法,获得文件名
然后打开这个文件,
然后读取内容,显示即可
[解决办法]
http://www.vckbase.com/document/viewdoc/?id=1419

看看这个也许有帮助...
[解决办法]
假设你已经为edit控件定义了一个CString类型的成员变量m_str关联起来
那button的click消息处理函数里,加入如下代码
CFileDialog dlg(TRUE, ".txt ", NULL, 0, "Text Files (*.txt)|*.txt|All Files(*.*)|*.*|| ");
if (dlg.DoModal() == IDOK)
{
m_str = dlg.GetPathName();
UpdateData(FALSE);
}
[解决办法]
我是这么做的,你可以借鉴下.


char path[MAX_PATH];; //用来存储路径的字符串
BROWSEINFO bi;//接收用户所选择的文件夹的参数信息
//ZeroMemory(&bi, sizeof(bi));//清空bInfo在内存中的空间,全部置零

bi.hwndOwner = AfxGetApp()-> m_pMainWnd-> GetSafeHwnd();//得到对话框父窗口的句柄
//CImageRetrievalApp* pApp = (CImageRetrievalApp*) AfxGetApp();//需要进行类型转换
//bi.hwndOwner = pApp-> GetMainWnd()-> GetSafeHwnd();//GetMainWnd()所得到的就是m_pMainWnd
bi.pidlRoot = NULL;
bi.pszDisplayName = path;
bi.lpszTitle = _T( "请选择进行检索的图像库: ");//在对话框中显示字符
bi.ulFlags = BIF_EDITBOX|BIF_RETURNONLYFSDIRS; //增加一个编辑控件,用户可以在里面直接输入路径条目
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;

LPITEMIDLIST pidl; //用来保存返回信息的IDList
pidl = SHBrowseForFolder(&bi) ; //显示一可以使用户选择文件夹的对话框,返回值为LPITEMIDLIST类型

if(pidl != NULL) //用户按了确定按钮
{
pView-> m_JiShu = 0;
pView-> m_Seek_ListCtrl.DeleteAllItems();//以前检索的所有的图像列表全部清空

//pView-> Seekimagepath = " ";//清空显示图像
pView-> Seekimage.load( " null.jpg ");


for (int i=0;i <32;i++)//清空最前面图像的显示
{
pView-> SelectImage[i].load( " null.jpg ");
}


SHGetPathFromIDList(pidl, path);//把项目标识列表转化成字符串
FilePath = path; //将CHAR类型的字符串转换为CString类型的字符串
FilePath += "\\ "; //在路径后好加上文件的名字
}

CHAR szFind[MAX_PATH];
lstrcpy(szFind, FilePath);

lstrcat(szFind, "*.jpg "); // 找所有jpg文件

//hFind = FindFirstFile(szFind, &FileData);
//if (FindFirstFile(szFind, &FileData) == INVALID_HANDLE_VALUE)
if((pView-> hFind = FindFirstFile(szFind, &(pView-> FileData))) == INVALID_HANDLE_VALUE)
{
pView-> MessageBox( "该文件夹中没有jpg图像,请重新选择 ");
return ;
}

bi.iImage = 0;

LPITEMIDLIST pidl; //用来保存返回信息的IDList
pidl = SHBrowseForFolder(&bi) ; //显示一可以使用户选择文件夹的对话框,返回值为LPITEMIDLIST类型

热点排行