Chinaunix首页 | 论坛 | 博客
  • 博客访问: 359254
  • 博文数量: 793
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 8660
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-17 23:02
文章分类

全部博文(793)

文章存档

2010年(793)

我的朋友

分类:

2010-10-24 15:58:15

  这个问题其实是由pocket pc的cfiledialog问题引发来的。   cfiledialog打开后,只能选择my documents下的目录和文件,功能超弱的说(其实应该叫cdocumentfiledialog才对)。   好想自己做一个dialog啊,就跟pc上一样,可以选择任务目录和文件......   枝节不叙,捡点重要的来啰嗦。   用到一个clistctrl控件,来显示目录下的文件,当然图标最好跟系统的一样,这样才美观。   这里假设m_listfile就是list控件,m_imlsys为cimagelist对象,都为对话框的成员变量。代码如下: himagelist  himlsys; shfileinfo  ssfi;    memset(&ssfi,0,sizeof(ssfi)); himlsys = (himagelist)shgetfileinfo(                      _t("hello"),                   0,                   &ssfi,                   sizeof(shfileinfo),                   shgfi_usefileattributes | shgfi_sysiconindex | shgfi_smallicon);    m_imlsys.attach(himlsys); m_listfile.setimagelist(&m_imlsys, lvsil_small);   这样把系统的小图标(shgfi_smallicon)都载入到了m_imlsys。这些代码在dialog的oninitdialog中实现。"hello"也可以写成任何值,因为使用了shgfi_usefileattributes参数,会忽略第一个参数。还有一个很重要的问题是,在对话框退出时,要调用m_imlsys.detach()来销毁资源。不然,很可能退出对话框后,连系统"开始"的的图标都看不到了。   clistctrl的insertitem可以指定显示图标的索引(即图标在cimagelist中的位置)。那么,怎么得到这个索引值呢?   还是使用shgetfileinfo函数,如下: shfileinfo ssfi; shgetfileinfo(pszfilename, 0, &ssfi, sizeof(shfileinfo), shgfi_sysiconindex | shgfi_smallicon);   ssfi.iicon就是我们要的值。在这里,pszfilename请指定文件的整个路径(包括后缀名)。 如果喜欢windows mobile下获取系统图标 - windows mobile请收藏或告诉您的好朋友.
阅读(239) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~