|
本帖最后由 popdes 于 2017-11-8 11:27 编辑
如题:
功能比较简单, 写给自己 与 自己一样的新人.
功能: 获取系统目录和图标,显示在listview
本来是想能不能显示到listbox控件里, 但是发现listbox是没有imagelist属性的,
Jacen发的有个用treeview树形控件实现explore的代码, 于是想能不能移植到listview中....
昨晚弄了一晚,奈何技术不行,也没弄出个所以然来. 后面慢慢实验, 如果移植出来了也分享出来, 先总结个最基础的代码...
- import win.ui;
- /*DSG{{*/
- var winform = win.form(text="listview获取系统图标列表";right=783;bottom=583;bgcolor=12213772;parent=...)
- winform.add(
- listview={cls="listview";left=16;top=110;right=373;bottom=556;db=1;dl=1;dr=1;dt=1;edge=1;vscroll=1;z=1};
- listview2={cls="listview";left=407;top=109;right=764;bottom=555;db=1;dl=1;dr=1;dt=1;edge=1;vscroll=1;z=2};
- static={cls="static";text="方式一";left=24;top=64;right=214;bottom=97;color=16777215;font=LOGFONT(h=-29);transparent=1;z=3};
- static2={cls="static";text="方式二";left=411;top=71;right=601;bottom=104;color=16777215;font=LOGFONT(h=-29);transparent=1;z=4}
- )
- /*}}*/
- import fsys;
- import fsys.lnk;
- import fsys.info;
- //获取系统图标列表
-
- //移除列标题
- winform.listview.modifyStyle(,0x4000/*_LVS_NOCOLUMNHEADER*/)
- winform.listview.insertColumn("1",-1)
- winform.listview2.modifyStyle(,0x4000/*_LVS_NOCOLUMNHEADER*/)
- winform.listview2.insertColumn("1",-1)
- //win.ui.explorer
- import win.imageList;
- shImageList = win.imageList.shell( 0/*_SHIL_LARGE*/ )
- winform.listview.setImageList( shImageList,1/*_LVSIL_NORMAL*/ )
- winform.listview2.setImageList( shImageList,1/*_LVSIL_NORMAL*/ )
- //方式一
- files,,dirs = ..fsys.list("C:\Users\Administrator\Desktop");
- var filename;
- var getInfo = ..fsys.info.get;
- var toUnicode = ..string.toUtf16;
- for(i=1;#files){
- filename = files[i];
- var sfi = getInfo(files[filename] ,0x10/*_SHGFI_USEFILEATTRIBUTES*/ | 0x4000/*_SHGFI_SYSICONINDEX*/);
- winform.listview.addItem( {
- text = toUnicode(filename);
- iImage = sfi.iIcon;
- } )
- }
-
- //方式二
- var lnk = fsys.lnk();
- fsys.enum( fsys.getSpecial(0 /*_CSIDL_DESKTOP*/ ) , "*.*",
- function(dir,filename,fullpath,findData){
- if(filename){
- // lnk.load(fullpath);//加载快捷方式
- //console.log("快捷方式:"+filename, "实际路径:"+lnk.path )
- //路径如果用filename,得到的图标中快捷方式会没图标
- //var sfi = fsys.info.get(filename, 0x4000/*_SHGFI_SYSICONINDEX*/ | 0x10/*_SHGFI_DISPLAYNAME*/)
- var sfi = fsys.info.get(fullpath, 0x4000/*_SHGFI_SYSICONINDEX*/ | 0x10/*_SHGFI_DISPLAYNAME*/)
- //显示图标
- winform.listview2.addItem( {
- text = filename;//sfi.szDisplayName;不显示后缀
- iImage = sfi.iIcon;
- } )
- }
- },false
- );
-
- winform.enableDpiScaling();
- winform.show();
-
- win.loopMessage();
复制代码
|
|