| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 766 人关注过本帖
标题:ListView控件使用问题
取消只看楼主 加入收藏
郭云00
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2023-2-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
ListView控件使用问题
ListView用鼠标选择一个项,然后可以进入编辑状态。然后创建一个新的项,却无法进入编辑状态,问1.需要做那些设置,2.如何给这个项设置焦点。
搜索更多相关主题的帖子: 状态 控件 焦点 ListView 编辑 
2023-02-21 16:38
郭云00
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2023-2-21
收藏
得分:0 
Listview派生自listbox控件。一个最重要的区别是listview默认使用扩展选择模式。listview还添加了一个名为view的属性,它使您能够以比自定义项目面板更丰富的方式自定义视图。
2023-02-22 11:51
郭云00
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2023-2-21
收藏
得分:0 
程序入口时做了
    icc.dwSize = sizeof (INITCOMMONCONTROLSEX);
    icc.dwICC = ICC_LISTVIEW_CLASSES | ICC_TREEVIEW_CLASSES | ICC_TAB_CLASSES | ICC_UPDOWN_CLASS | ICC_BAR_CLASSES | ICC_COOL_CLASSES;
    InitCommonControlsEx (&icc);
初始化时做了
    hList = CreateWindowEx (WS_EX_CLIENTEDGE, ListViewClass, NULL, WS_CHILD | WS_VISIBLE | LVS_SHAREIMAGELISTS | LVS_EDITLABELS, 0, 0, 0, 0, hWnd, NULL, hInst, NULL);
然后,以下是对ListView的原有的项做更名操作(其他操作没有列出)
    switch (Msg)
    {
        case IDN_COMMAND)
            switch (LOWORD(wParam))
            {
                case IDM_RENAME:
                    lvi.mask = LVIF_PARAM;
                    dwCnt = SendMessage (hList, LVM_GETNEXTITEM, -1, LVNI_FOCUSED);
                    SendMessage (hList, LVM_GETITEMTEXT, (WPARAM)dwCnt, (LPARAM)&lvi);
                    SendMessage (v, LVM_EDITLABEL, lvi.iItem, 0);
                    break;
            }
            break
    }
    结果如期望所得,进入项目名称的编辑状态。
但是,对于新加入的项目操作
    switch (Msg)
    {
        case IDN_COMMAND)
            switch (LOWORD(wParam))
            {
                case IDM_CREATE:
                    dwCnt = SendMessage (hList, LVM_GETITEMCOUNT, 0, 0);
                    lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
                    lvi.iItem = dwCnt;
                    lvi.iSubItem = 0;
                    lvi.lParam = 1;
                    lvi.cchTextMax = 18;
                    lvi.iImage = 1;
                    lvi.pszText = FileName;
                    lvi.state = LVIS_SELECTED | LVIS_FOCUSED;
                    lvi.stateMask = -1;
                    if ((dwCnt = SendMessage (hList, LVM_INSERTITEM, 0, (LPARAM)&lvi)) != -1)
                    SendMessage (hList, LVM_EDITLABEL, dwCnt, 0);
                    break;
            }
            break
    }
    项目是产生了,但进不了编辑状态。
2023-02-22 22:47
郭云00
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2023-2-21
收藏
得分:0 
谢谢楼上的回答。可是有些观点我不能苟同,ListView是这个控件的通用称呼,至于SysListView32是这个控件创建窗口时的名称。而且为了回答ListView和ListBox的区别,才复制了这么一段解释,并不想浪费大家的时间,如确实起到了浪费的效果,在这里给大家收对不起。
您提供的建议没有用,那只是对窗口设了焦点,并没有对其中的项目设焦点,再说我也试过了。
至于没有提供完整代码的问题,主要是代码很长,牵实到大量与本问题无关的操作,阅读全部与本问题无关的代码,才是浪费时间。我认为这里提供的代码应该已经讲清楚了,凡是用过ListView控件的,一看就明白的。
2023-02-23 17:08
快速回复:ListView控件使用问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027686 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved