ListCtrl SDK 一些问题
来源:互联网 发布:2个excel表格数据合并 编辑:程序博客网 时间:2024/06/06 03:24
ListCtrl 中 item 的创建: LVM_INSERTITEM
LVITEM stItem ;
stItem.iItem = i ; // 第几列
stItem.iSubItem = 0 ; //必须置0, 否则,无效
stItem.iImage = stShellFileInfo.iIcon;
stItem.pszText = L"1st SubItem" ;
::SendMessageW( hList , LVM_INSERTITEM , 0 , (LPARAM)&stItem ) ;
设置SubItem值: LVM_SETITEMTEXT
stItem.iSubItem = 1 ;
stItem.pszText = L"sUBiTEM";
::SendMessageW( hList, LVM_SETITEMTEXT , i , (LPARAM)&stItem ) ;
设置ListCtrl某一行被选择:
LVITEM stItem;
stItem.stateMask = LVIS_SELECTED;
stItem.state = LVIS_SELECTED;
::SendMessageW(hList, LVM_SETITEMSTATE, 0, (LPARAM)& stItem) ;
有时候你把这些代码放在OnInitDialog中,会发现3种情况:
1.完全没有选择.
2.被正确选择,但是是灰色(无焦点)
3.被正确选择,蓝色(有焦点)
原因是:
如果ListCtrl没有得到焦点则会不显示,或者显示灰色. ( 当 style 有: LVS_SHOWSELALWAYS 风格是总是显示,也可以直接在模板中选择 Always Show Slection. )
以上讲了1,2的情况.
要做到3,只需要设置当前焦点为ListCtrl, 比较方便的方法是在选中对话框,Ctrl+D, 双击ListCtrl,使之显示1,表示ListCtrl将获取第一焦点.
设置ListCtrl图标:
以系统文件图标为例:
SHFILEINFO stShellFileInfo = {0};
SHFILEINFOA sfia = {0};
HIMAGELIST hImageList = (HIMAGELIST)::SHGetFileInfoW(
L"",
0,
&stShellFileInfo,
sizeof(stShellFileInfo),
0X4001);//SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_ICON);
::SendMessageW( hList , LVM_SETIMAGELIST , LVSIL_SMALL , (LPARAM)hImageList ) ;
这里有一个问题, 如果你使用 ::SHGetFileInfoA 这个版本的函数,你的第一个参数可以设置为 NULL , 仍然可以得到ImageList,但是宽字符版本必须要求你为: L"" .
MSDN 社区:
http://social.microsoft.com/Forums/zh-CN/visualcpluszhchs/thread/fd9ad2ac-6681-4d0f-810f-b7c233edcb94/
你好,做两处更改应该就可以了
1、LVSIL_SMALL改成LVSIL_NORMAL;
2、把SHGetFileInfo()中的第一个参数NULL改成(LPCTSTR)_T("")
代码如下:
HRESULT hresut=CoInitialize(NULL);
HIMAGELIST hSystemSmallImageList;
SHFILEINFO shfi;
hSystemSmallImageList = (HIMAGELIST)SHGetFileInfo((LPCTSTR)_T(""), 0, &shfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON |SHGFI_ICON);
m_ImageList.Attach(hSystemSmallImageList);
m_fileTree.SetImageList(&m_ImageList,LVSIL_NORMAL);
SHFILEINFO sfi;
SHGetFileInfo((LPCTSTR)_T(".dll"),FILE_ATTRIBUTE_NORMAL,&sfi,sizeof(SHFILEINFO),SHGFI_SYSICONINDEX|SHGFI_ICON|SHGFI_USEFILEATTRIBUTES|SHGFI_DISPLAYNAME |SHGFI_TYPENAME |SHGFI_ICON );
HTREEITEM hFirst=m_fileTree.InsertItem((LPCTSTR)_T("aaa"),sfi.iIcon,sfi.iIcon);
m_fileTree.InsertItem((LPCTSTR)_T("bbb"),sfi.iIcon,sfi.iIcon,hFirst);
m_fileTree.InsertItem((LPCTSTR)_T("ccc"),sfi.iIcon,sfi.iIcon,hFirst);
m_ImageList.Detach();
- ListCtrl SDK 一些问题
- Android SDK Manager 一些问题
- 操作ListCtrl的一些方法
- Android 5.0 SDK 一些技术问题
- 百度SDK集成一些小问题
- 关于SDK manager.exe的一些问题
- 接sdk时遇到的一些问题:
- listctrl控件的显示问题
- ListCtrl Checkbox多选问题
- ListCtrl Checkbox多选问题
- ListCtrl Checkbox多选问题
- ListCtrl
- ListCtrl
- listctrl
- ListCtrl
- listctrl
- listctrl
- 关于ListCtrl控件的一些用法
- 关于纵轴中文不能纵向显示的解决
- AOP是什么?
- 利用UE宏,批处理去掉VS2005警告错误:warning C4819: 该文件包含不能在当前代码页(936)中表示的字符
- 任务、父子任务的关系在系统中的表示
- ASP.NET MVC 入门4、Controller与Action
- ListCtrl SDK 一些问题
- 公钥加密(不对称加密)
- SQL操作全集
- wsdl2java ( axis2 ) pom 文档
- SaaS架构成熟度模型
- ASP.NET MVC 入门5、View与ViewData
- Linux 2.6.x 内核模块加载错误 “Invalid module format” 解决办法
- 利用tmail.exe 命令参数来发送邮件 (转自飞扬大哥BLOG)
- wsdl2java ( axis 1.4 ) pom 文档