| 发表于:2007-04-24 10:53:506楼 得分:0 |
我插入一个节点,其文本是:local drive (c:) 但显示出来却是这样的:(:local drive (c 请问这是怎么回事呢? 代码如下: void cdirtree::listdrivers() {//在复合框中列出驱动器。 tchar *chbuffer=new tchar[188]; getlogicaldrivestrings(188,chbuffer);//得到逻辑驱动器 cstring strdrivername; deleteallitems();//reset the content. m_strlist.removeall(); shfileinfo sfi; zeromemory(&sfi,sizeof(sfi)); lpitemidlist pidlmycomputer = null; shgetspecialfolderlocation(null, csidl_drives, &pidlmycomputer); shgetfileinfo((lpctstr)pidlmycomputer,null,&sfi,sizeof(shfileinfo),shgfi_displayname ¦ shgfi_sysiconindex ¦shgfi_typename ¦shgfi_pidl); //root is my computer. m_htreeroot=insertitem(sfi.szdisplayname,sfi.iicon,sfi.iicon); tvinsertstruct tvinsert; tvinsert.hparent = m_htreeroot; tvinsert.hinsertafter = tvi_last; tvinsert.item.mask = tvif_text ¦ tvif_image ¦ tvif_selectedimage; for (int ncount = 0;chbuffer[ncount] ¦ ¦ chbuffer[ncount + 1];ncount++) { if (chbuffer[ncount] == '\0 ' ¦ ¦ chbuffer[ncount] == ': ' ¦ ¦chbuffer[ncount] == '\\ ') continue; else { strdrivername.empty(); strdrivername=chbuffer[ncount]; strdrivername.makeupper(); strdrivername=strdrivername+ ": "; cstring strdrive=strdrivername+ "\\ "; zeromemory(&sfi,sizeof(sfi)); shgetfileinfo((lpctstr)strdrive, file_attribute_normal, &sfi, sizeof(sfi), shgfi_usefileattributes ¦shgfi_sysiconindex ¦ shgfi_typename ¦shgfi_displayname); tvinsert.item.psztext =sfi.szdisplayname; tvinsert.item.iimage=sfi.iicon; tvinsert.item.iselectedimage=sfi.iicon; insertitem(&tvinsert); } } delete []chbuffer; expand(m_htreeroot,tve_expand); } | | |
|