Warning: fopen(blog/online.php) [function.fopen]: failed to open stream: Permission denied in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 179

Warning: flock(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 180

Warning: fwrite(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 181

Warning: ftruncate(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 182

Warning: fclose(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 183

Warning: fread(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 754

Warning: fopen(sf/text/counter.backup.php) [function.fopen]: failed to open stream: Permission denied in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 179

Warning: flock(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 180

Warning: fwrite(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 181

Warning: ftruncate(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 182

Warning: fclose(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 183

Warning: rewind(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 765

Warning: fseek(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 766

Warning: fputs(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 767

Warning: rewind(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 768

Warning: fseek(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 769

Warning: fputs(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 770

Warning: fopen(sf/text/a_20050329_093302.art) [function.fopen]: failed to open stream: Permission denied in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 179

Warning: flock(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 180

Warning: fwrite(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 181

Warning: ftruncate(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 182

Warning: fclose(): supplied argument is not a valid stream resource in /home/ftp/512j.com/y/i/p/yippeesoft/blog/global.php on line 183
扩充文件选择对话框的多选能力
首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(2) | 引用(-1) | 阅读2622次
扩充文件选择对话框的多选能力

                   扩充文件选择对话框的多选能力

     我们都会使用VC的CfileFialog类进行文件选择操作,使用非常简单,通常代码如下:

     CFileDialog mFileDlg(TRUE, NULL,NULL, OFN_ALLOWMULTISELECT,"All Files (*.*)&line;*.*&line; &line;", AfxGetMainWnd()); //初始化一个CFIleDialog类,设置多选标志

CString pathName;

     If(mFileDlg.DoModal ()==IDOK)

     {

     POSITION mPos=mFileDlg.GetStartPosition();

         while(mPos!=NULL)

         {

              pathName=mFileDlg.GetNextPathName(mPos);

              TRACE("%s\n",pathName);

     }

     }

     else

         TRACE(“IDCANCLE\n”);

     以上是一段显示文件选择对话框进行多选,然后显示每个文件名的代码,我调试程序的时候似乎很正常,可以进行多选,不会出错,但是一次我不经意的进入WIN98目录,用鼠标选择了大量文件后,调试信息中显示返回是IDCANCLE,可是我明明是选择了“打开”按钮的,经过反复调试,终于解决了这个问题。

     原来,CfileDialog类有一个成员变量:m_ofn,定义为一个OPENFILENAME结构,在这个接口里,可以设置各种文件对话框的初始化信息,如果我们进行多选,那么需要重新设置其中的两个变量:

       LPTSTR        lpstrFile;   DWORD         nMaxFile;

       这两个变量就是定义为存放返回的文件名的字符串及其大小,如果我们在前面的代码中增加一行,TRACE("nMaxFile :%d\n",mFileDlg.m_ofn.nMaxFile);查看WINDOWS默认大小,就会发现原来只能存发260个字符,所以我们必须自己重新定义字符串大小。代码如下:

       CFileDialog mFileDlg(TRUE, NULL,NULL, OFN_ALLOWMULTISELECT,"All Files (*.*)&line;*.*&line; &line;", AfxGetMainWnd());

 

         mFileDlg.m_ofn.lpstrFile=new char[2000]; //重新定义存放选择文件名称的字符串

         memset(mFileDlg.m_ofn.lpstrFile,0,2000);  //进行初始化

mFileDlg.m_ofn.nMaxFile =2000;                          //重新定义字符串大小

//2000这个数值可以根据需要进行调整,以便更好符合程序实际应用情况。

         …..

         delete mFileDlg.m_ofn.lpstrFile;         //最后手工释放资源

         由此就解决了CfileDialog对话框类默认存放文件名过小的问题,同时也提醒我们任何一个程序都需要进行各种模拟测试,不要简单测试正常就通过,否则,因为不同用户有不同的环境,程序发行后就会很容易产生各种问题。


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/fileselmul.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1112059982

2005年3月29日09:33星期二  [Dev开发] 追踪此文的RSS
haha在 2005年8月9日10:25星期二 评论:
EmotionEmotionEmotion

zyx在 2005年7月31日15:08星期日 评论:
EmotionEmotion
Yippee 回复于 2005年7月31日22:30
:)

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告
Fire and Motion!

统计信息
[Yippee]||[统计]||日志:-1000000000
在线: 16||用户: -1000000000 [列表]
今日:1||到访:-1000000000
Rss:841981||评论:-1000000000

最新日志

最新评论

友情链接

日历

最新引用

搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8