您的位置:程序门 -> c/c++ -> c++ 语言



请问如何在mfc基于对话框中实现打开文件这个功能?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请问如何在mfc基于对话框中实现打开文件这个功能?[已结贴,结贴人:grmoney]
发表于:2007-09-06 07:32:15 楼主
要求:我新建一个button按钮。。然后我点击他就弹出我们平时打开文件的对话框。。上面有目录。。然后我选择文件(要求txt的)。。然后我读取了这个文件并显示在另一个edit框中。。。。。。。请问怎么实现。。新手刚学mfc。望高手指点。。。请详细说明。。不要给我帖一段代码。。。。谢谢
发表于:2007-09-06 07:41:251楼 得分:0
cfiledialog
发表于:2007-09-06 07:43:092楼 得分:10
简单例子:
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()     //或者其他成员方法,获得文件名
然后打开这个文件,
然后读取内容,显示即可
发表于:2007-09-06 07:45:043楼 得分:0
更多信息,例子,查询   msdn
发表于:2007-09-06 07:45:204楼 得分:10
http://www.vckbase.com/document/viewdoc/?id=1419

看看这个也许有帮助...
发表于:2007-09-06 07:52:595楼 得分:40
假设你已经为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);
}
发表于:2007-09-06 07:56:516楼 得分:40
我是这么做的,你可以借鉴下.


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类型
发表于:2007-09-06 09:52:157楼 得分:0
学习下~~~~~~~~~
发表于:2007-09-06 12:19:148楼 得分:0
谢谢各位了。。结帖了。。。


快速检索

最新资讯
热门点击