首页
|
原创荟萃
|
易语言
|
易飞扬
|
编程专题
|
VC++
|
VB
|
汇编技术
|
数据结构
|
软件工程
|
免费资源
|
新闻资讯
您的位置:
逆风者
→
VC++
→
正文
计算MDI子窗口数,仅显示文件夹的打开对话框(4)
添加时间:2007-09-01 原文发表:2007-08-31 人气:85 来源:vckbase.com
本文章共5773字,分4页,当前第4页,快速翻页:
1
2
3
4
Figure 5
具体实现代码和 Figure 6。CFolderDialog 在内部实现了自己的 IFolderFilter,也就是调用对应的虚拟函数。CFolderDialog::OnIUnknown 使用了活动模板库(ATL)CComQIPtr 智能指针类,它使得 COM 编码轻而易举。
逆风者
如果你决定用定制的过滤器,要小心,因为它改写了 BIF_RETURNONLYFSDIRS 这样的标志(只返回文件系统目录)。出于好玩,我决定当所选的项目不是文件系统目录时,通过手动禁用 OK 按钮,自己为 FolderPick 实现 BIF_RETURNONLYFSDIRS。为了检查文件系统对象,你要考虑适当的方式调用 IShellFolder::GetAttributesOf 并寻找 SFGAO_FILESYSTEM。但是当我尝试这样做的时候,“我的电脑”得到的是SFGAO_FILESYSTEM 属性,尽管它并非真正的文件系统目录!后来,我发现要想知道某个外壳对象是否为真正的文件或文件夹,唯一可靠的方法是调用 GetPathName 并检查串是否为空。在 CMyFolderDialog 中我就是这么做的,一旦碰到非文件夹则禁用 OK 按钮。具体细节请参考下载的源代码。
最后,为了帮助你理解来龙去脉,我对运行时的 CFolderDialog 进行了 TRACE 跟踪诊断。如图 Figure 6 所示。
Figure 6 TraceWin
你可以通过设置 CFolderDialog::bTRACE 全局变量对诊断进行开/关控制。当然,跟踪只能在调试模式进行。下载的代码中附带有 TraceWin 的免费拷贝,以便不用运行调试器就能察看诊断输出。
SHBrowseForFolder 还有许多标志和特性我没有发掘,但是不论你使用哪种特性,CFolderDialog 都能减轻你的工作负担并让你能用 MFC 的方式来编写使用 SHBrowseForFolder 的程序。
祝编程愉快!
您的提问和评论可发送到 Paul 的信箱:
cppqa@microsoft.com
作者简介
Paul DiLascia
是一名自由作家,顾问和 Web/UI 设计者。他是《Writing Reusable Windows Code in C 》书(Addison-Wesley, 1992)的作者。通过
http://www.dilascia.com
可以获得更多了解。 本文出自
MSDN Magazine
的
June 2005
期刊,可通过当地报摊获得,或者最好是
订阅
本文章更多内容
:
<<上一页
-
1
-
2
-
3
-
4
相关文章
•
PE文件格式详解(下)
•
GDI和GDI 对象的相互转换
•
软件框架的利器、TangramMini组件应用教程二
•
C语言高效编程的几招
•
VC 操作 SQL Server 主从表
•
软件测试悖论
•
如何在 C# 中加载自己编写的动态链接库
•
DLL头文件的格式和应用
•
用 Web 服务进行二进制序列化和 BinaryForm
•
QQ2006 界面编程之鸡蛋里挑骨头
•
基于MFC对话框的NT服务程序框架
•
关于控件注册和使用许可问题的解决办法
•
汉诺塔游戏的设计
•
Spy++原理初探
•
WIN32程序挂钩SetLastError,输出错误描述到
•
超强仿QQ自动伸缩窗口
•
VC实用小知识总结 (一)
•
VC实用小知识总结 (二)
•
BMP图象解析
•
让你的软件界面更漂亮(五)
相关评论
本文章所属分类:
首页
→
VC++
文章搜索
热门关键字:
热门文章
•
初试驱动---OV511 摄像头驱动开发
2007-08-31
•
Spy++原理初探
2007-09-08
•
让你的软件界面更漂亮(五)
2007-09-17
•
IP Messenger 详细分析
2007-08-31
•
VC中调用EXECL模板生成报表
2007-08-31
•
关于SendMessage
2007-08-31
•
利用IJG JPEG Library压缩图像为jp...
2007-10-22
•
用 C 创建简单的 Win32 服务程序
2007-08-31
•
MFC 编写的仿 Windows 计算器
2007-08-31
•
TIF格式图像文件初探
2007-08-31
•
Win32串口编程
2007-08-31
•
一个优秀的网格控件CGridCtrl
2007-08-31
•
真正的全动态报表:RDLC ReportVie...
2007-08-31
•
定时显示远程计算机的桌面
2007-08-31
•
MFC中基于对话框程序快捷键的实现
2007-10-22
•
使用免费界面换肤软件 USkin
2007-08-31
•
BMP图象解析
2007-09-17
•
在VC中调用 WebService (非托管)
2007-08-31
推荐文章
•
Spy++原理初探
2007-09-08
•
在EVC3.0中使用数据库
2007-08-31
•
如何实现Office式样的扁平组合框
2007-08-31
•
Brew 后台应用开发
2007-08-31
•
浅谈PDFlib中文输出(二)如何在PD...
2007-08-31
•
用 C 创建简单的 Win32 服务程序
2007-08-31
•
DataGrid的客户端分页
2007-08-31
•
真正的全动态报表:RDLC ReportVie...
2007-08-31
•
COM 组件设计与应用(十六)——连...
2007-08-31
•
VC中调用EXECL模板生成报表
2007-08-31
•
在Visual C 中定制AppWizard (一)
2007-08-31
•
连接 COM 与 .NET 的桥梁(一)——预...
2007-08-31
•
层叠式窗体控件指南
2007-08-31
•
基于 SSL 的 ASP.NET Web 应用测试...
2007-08-31
•
Windows SDK笔记(七):创建MDI窗口
2007-08-31
•
KVIP考勤系统
2007-08-31
•
一个生成公章图片的简易工具
2007-08-31
•
检测:.NET中强大的检测选项让你有...
2007-08-31
最新文章
•
Skype录音答录机编程思路和代码
2008-09-25
•
VC模仿超炫QQ界面的实现
2008-09-25
•
仿QQ悬挂窗口的实现
2008-07-13
•
七段数码显示的数字时钟
2008-07-13
•
通过ODBC API实现对数据库的访问
2008-07-13
•
单件模式之土著人的可乐瓶
2008-07-13
•
利用模板元编程实现解循环优化
2008-07-13
•
一个支持各种交叉等形状工业控制管...
2008-07-13
•
动态加载CBitmapButton的四副状态图
2008-07-13
•
一个简单的外挂制作
2008-07-13
•
内存映射修改大文件
2008-07-13
•
从printf谈可变参数函数的实现
2008-07-13
•
通用 Thunk
2008-05-20
•
VC6绘制3D饼状图 - 完美版
2008-03-30
•
自定义控件—特效列表控件
2008-03-22
•
直接调用类成员函数地址
2008-03-22
•
Thunk 技术的一个改进
2008-03-22
•
一个工业控制管道流动控件的实现
2008-03-22
返回网站首页