clistctrl 双击怎么样获得行号,列号

MFC CListCtrl实现双击编辑 添加CListCtrl控件的NM_DBLCLK(鼠标左键双击)消息映射 OnNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult) { NM_LISTVIEW *pNMListCtrl = (NM_LISTVIEW *)pNMHDR; //该变量是个结构体指针,该结构体中存放着双击行号(iItem),以及(iSubItem),当未选中时返回-1 ... 阅读详情


http://www.qqgb.com/program/vc/vcjc/program_234088.html
 
<script style="display: none;" type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
第一列为项目,第二列为次数,要求双击第一列的每一行都产生一个小对话框,输入次数显示在对应的第二列上。
这个问题第1个回答:
响应NM_DBLCLK消息,NMITEMACTIVATE结构中的iItem、iSubItem就是行、列号。
这个问题第2个回答:
添加NM_DBLCLK消息响应
这个问题第3个回答:
int Row=m_list.GetSelectionMark(); //这样可以获取你点击的那一行
这个问题第4个回答:
已经添加了双击函数,双击后窗口也弹出了,求后面代码,在线等
这个问题第5个回答:
LPNMLISTVIEW pNMLV = reinterpret_cast <LPNMLISTVIEW>(pNMHDR);
pNMLV->iItem //行号
pNMLV->iSubItem //列号


这个问题第6个回答:
在弹出对话框如果你是用编辑框作为输入次数的话,为编辑框添加EN_CHANGE消息响应
如:
void CAnalogy::OnChangeEdit5()
{
CString str;
GetDlgItem(IDC_EDIT1)->SetWindowText(str);
CDlgList *p=(CDlgList *)GetParent(); //获得Listctrl控件所在对话框的指针
int Row=p->m_list.GetSelectionMark(); //这样可以获取你点击的那一行
p->m_list.SetItemText(Row,2);
}
这个问题第7个回答:
int Row=m_list.GetSelectionMark();
m_list.SetItemText(Row,1,"你的次数放这"); //BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText);
这个问题第8个回答:
更正:
引用 6 楼 zqh886 的回复:
在弹出对话框如果你是用编辑框作为输入次数的话,为编辑框添加EN_CHANGE消息响应
如:
void CAnalogy::OnChangeEdit5()
{
CString str;
GetDlgItem(IDC_EDIT1)->SetWindowText(str);
CDlgList *p=(CDlgList *)GetParent(); //获得Listctrl控件所在对话框的指针
int Row=p->m_list.GetSelectionMark(); //这样可以获取你点击的那一行
p->m_list.SetItemText(Row,2); //漏写了str
}

p->m_list.SetItemText(Row,2,str);
这个问题第9个回答:
打球去了刚才,不好意思。 cdlglist是什么东西啊,系统提示不正确
这个问题第10个回答:
cdlglist 就是你CListCtrl控件所在的对话框的类,

上面函数体你也可以在点击OK按钮时处理

还有就是不要忘记添加cdlglist 类的头文件
这个问题第11个回答:
加了EN_CHANGE输入一个数字整个程序就关了,怎么回事啊
而且这段代码加到按钮的消息响应函数里也不起作用阿
这个问题第12个回答:
我刚才也是照你说的弄得,就是上面这种状况
这个问题第13个回答:
假设你编辑框所在的对话框类是CDlgA
那你可以在双击函数中处理看看
#include "DlgA.h"
CDlgA dlg;
if(dlg.DoModal()==IDOK)
{
CString str;
GetDlgItem(IDC_EDIT1)->SetWindowText(str);
CDlgList *p=(CDlgList *)GetParent(); //获得Listctrl控件所在对话框的指针
int Row=p->m_list.GetSelectionMark(); //这样可以获取你点击的那一行
p->m_list.SetItemText(Row,2,str);

}

这个问题第14个回答:
sorry

假设你编辑框所在的对话框类是CDlgA
那你可以在双击函数中处理看看
#include "DlgA.h"
CDlgA dlg;
if(dlg.DoModal()==IDOK)
{
CString str;
GetDlgItem(IDC_EDIT1)->SetWindowText(str);
int Row=m_list.GetSelectionMark(); //这样可以获取你点击的那一行
m_list.SetItemText(Row,2,str);
}
这个问题第15个回答:
#include "CDD.h" //CDD 就是你CListCtrl控件所在的对话框的类,

以下是在编辑框所在对话框的“确定”按钮中处理函数体

void CDlgA::OnOK() //CDlgA为编辑框所在对话框的类
{
// TODO: Add extra validation here

    CString str;
  CDD *p=(CDD *)GetParent();
    GetDlgItem(IDC_EDIT1)->GetWindowText(str);
    int Row=p->m_statuslist.GetSelectionMark(); //这样可以获取你点击的那一行
    p->m_statuslist.SetItemText(Row,2,str);


CDialog::OnOK();
}

我刚给你这样做了,测试通过

我试了一下上面我给的代码,GetDlgItem(IDC_EDIT1)->SetWindowText(str); 这句话不能取得编辑框的内容。

这个问题第16个回答:
//1、list ctrl初始化时要设置全行选中风格:
m_wndListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);

//2、处理list ctrl的NM_DBLCLK消息:
void CMYDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
    // TODO: Add your control notification handler code here
    LPNMLISTVIEW pNMListView = (NM_LISTVIEW *)pNMHDR;

    CString strText;
    //是否点击了有效的项目。
    if (pNMListView->iItem == -1)
    {
        AfxMessageBox("你没有点击任何项目");
    }
    else
    {
        //获取所点击的行和列的例子。
        strText.Format("你点击了第%d行", pNMListView->iItem);
        AfxMessageBox(strText);

        strText.Format("你点击了第%d列", pNMListView->iSubItem);
        AfxMessageBox(strText);

        //在这里显示对话框。可以使用GetDlgItemInt获取在文本框控件中输入的次数。
        //然后使用CString strNumber; strNumber.Format将次数转换为字符串。
        //最后使用m_wndListCtrl.SetItemText(pNMListView->iItem, 1, strNumber);设置第1列(次数列)的值。
    }

    *pResult = 0;
}

这个问题第17个回答:
//在CDD的OnInitDialog函数中为CListctrl控件

[1] [2] 下一页  





--------------------------------------

请问如何获得CListCtrl控件的当前选择项(单选和多选)?谢谢。

楼主qidai628(期待) 2005-11-28 16:59:30 在 VC/MFC / 界面 提问

请问如何获得CListCtrl控件的当前选择项(单选和多选)?谢谢。 问题点数:20、回复次数:6Top

1 楼aceouter(outer)回复于 2005-11-28 17:15:37 得分 5

CListCtrl*   pListCtrl   =   (CListCtrl*)   GetDlgItem(IDC_YOURLISTCONTROL);  
  ASSERT(pListCtrl   !=   NULL);  
   
  POSITION   pos   =   pList->GetFirstSelectedItemPosition();  
  if   (pos   ==   NULL)  
        TRACE0("No   items   were   selected!/n");  
  else  
  {  
        while   (pos)  
        {  
              int   nItem   =   pList->GetNextSelectedItem(pos);  
              TRACE1("Item   %d   was   selected!/n",   nItem);  
              //   you   could   do   your   own   processing   on   nItem   here  
        }  
  }  
  Top

2 楼lixiaosan(小三)回复于 2005-11-28 17:19:54 得分 5

//   The   pointer   to   my   list   view   control.  
  extern   CListCtrl*   pmyListCtrl;  
   
  //   Set   the   selection   mark   to   the   first   item   only   if   no   other   item   is    
  //   selected.  
  if   (pmyListCtrl->GetSelectionMark()   ==   -1)  
              pmyListCtrl->SetSelectionMark(0);  
   
   
   
  CListCtrl*   pListCtrl   =   (CListCtrl*)   GetDlgItem(IDC_YOURLISTCONTROL);  
  ASSERT(pListCtrl   !=   NULL);  
   
  POSITION   pos   =   pList->GetFirstSelectedItemPosition();  
  if   (pos   ==   NULL)  
        TRACE0("No   items   were   selected!/n");  
  else  
  {  
        while   (pos)  
        {  
              int   nItem   =   pList->GetNextSelectedItem(pos);  
              TRACE1("Item   %d   was   selected!/n",   nItem);  
              //   you   could   do   your   own   processing   on   nItem   here  
        }  
  }Top

3 楼happyparrot(快乐鹦鹉)回复于 2005-11-28 17:30:37 得分 10

好的方法:  
  int   nIdx   =   m_ListCtrl.GetNextItem(-1,LVNI_SELECTED);  
  如果有多选,那么判断nIdx是否为-1,不是则继续查找,继续查找用:  
  nIdx   =   m_ListCtrl.GetNextItem(nIdx,LVNI_SELECTED);Top

4 楼JonneyR(lxc)回复于 2005-11-28 17:31:29 得分 0

不错,学习了Top

5 楼qidai628(期待)回复于 2005-11-28 17:34:42 得分 0

在只能选择一项时,怎样得到当前选择项的index值?Top

6 楼happyparrot(快乐鹦鹉)回复于 2005-11-28 17:35:44 得分 0

用int   nIdx   =   m_ListCtrl.GetNextItem(-1,LVNI_SELECTED);  
  就可以了。nIdx就是你要的indexTop



http://www.80diy.com/home/20051128/16/4423738.html




实现CListCtrl可点击编辑 双击list控件上某个单元,出现编辑框,编辑后可确认修改。 需要在代码中管理一个eidt,在双击时,在表对应位置用eidt覆盖,确认或进行其他操作时,隐藏edit即可。 下面的代码是一个头文件,使用控件绑定。 使用时,随便找一个cpp里头写一下宏DECLARE_EditListCtlMESSAGE_MAP 将控件绑定的类型改成EditListCtl即可。 #pr 阅读详情

相关推荐

Cisco Firepower FMCv修改管理Ip方法

Cisco Firepower FMCv修改管理Ip方法

funnycoffee123的博客 1057

C++ MFC深入详解之----- 单双击ListControl控件获取选中行内容

首先为listControl添加消息NM_CLICK(单击)或NM_DBLCLK(双击)响应函数 在VC++中右击空白处点击ClassWizard找到ListControl控件的ID,在消息栏(Messages)中点击NM_CLICK(单击)或NM_DBLCLK(双击),在点击右侧添加方法(Add Function),添加成功 m_CCLIstlist控件关联的CListCtrl类型...

lzzw的学习之路 6749

沙猫群优化算法(SCSO)详解:从沙漠生存智慧到全局优化引擎

本文详细介绍了沙猫群优化算法(SCSO),这是一种新型元启发式优化算法,灵感来源于沙猫在沙漠环境中的卓越狩猎行为。SCSO通过模拟沙猫的低频探测能力和精确攻击策略,将优化问题转化为搜索和捕获"猎物"的过程。算法核心包括探索阶段(全局搜索)和开发阶段(局部精细搜索),通过灵敏度范围模型和自适应控制参数实现两者的平衡。SCSO具有参数简单、收敛性能好等优点,适用于解决复杂全局优化问题。

qq_42212808的博客 173

MFC的ClistCtrl双击获取单元格的行

首先要把ClistCtrl设置为整选中模式和网格模式 SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT); 重写方法如下: void CAldInfoDialog::OnNMDblclkListAld(NMHDR *pNMHDR, LRESULT *pResult) {  // TODO: 在此添加控件通知处理程序代码  Af

5015

MFC CListCtrl 点击选中整行

CListCtrl 默认只有点击第一才能选中,而且只能让第一高亮,那么如何让点击某一行的任何,整行都高亮呢? 有2个方法,如下: //方法1 ::SendMessage(m_listCtrlDevice.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT); //方法2 m

不经一番寒彻骨,怎得梅花扑鼻香。 6128

MFC表控件ListControl和树控件TreeControl

 表控件  表相关的类:CListCtrl-父类是CWnd,本质是一个控件; CListView-父类是CView,本质是一个视图。相当于在视图中嵌入了一个CListCtrl控件  表控件的使用    1.1 显示方式:LVS_ICON/LVS_SMALLICON/LVS_LIST/LVS_REPORT   1.2 图标:CListCtrl::SetImageLis

pudongdong的博客 1852

38.控制功能实现

单机游戏逆向、单机游戏安全、c++、反游戏外挂

计算机王的博客 294

VC 双击编辑CListCtrl中的数据(转)

想要双击实现修改表框内容,只需四步: 第一步:添加一个edit控件早任意位置,并关联一个变量如:m_edit;,在OnInitDialog()函数中写入 m_edit.ShowWindow(SW_HIDE),作用为初始时讲编辑框应藏 第二步:添加一个CListCtrl控件,关键一个变量如:m_list;然后响应该控件的NM_DBLCLK消息,也就是双击事件处理消息 第三部:在双击事件处理函数中写...

xiangzi890721的博客 565

禁止双击、拖动listctrl

重写类名为CMyListCtrl,集成CListCtrl 重写OnNotify函数 头文件 private: virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult); 源文件 BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam,

rundll64的专栏 2698

CListCtrl添加双击事件

CListCtrl控件是MS提供的,具有简单功能的

ghy429090的专栏 4141

使CListCtrl可编辑

<br />CListCtrl 是一个经常使用的控件,通常用来显示数据库的内容。但是,CListCtrl并不好用。我们当然希望CListCtrl能像Excel那样好用,因此,得在原来的基础上进行改进。<br />一、使CListCtrl能够编辑子项<br />1、在对话框中添加一个CListCtrl控件,并添加CListCtrl类型的变量m_list。<br />2、初始化控件<br />设置控件风格(照抄网上的)<br />LONG lStyle;<br />lStyle = GetWindowLong(

spinaches的专栏 1407

CListCtrl

一、使CListCtrl能够编辑子项 1、在对话框中添加一个CListCtrl控件,并添加CListCtrl类型的变量m_list。 2、初始化控件 设置控件风格(照抄网上的) LONG lStyle; lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE);//获取当前窗口style lStyle |= LVS_REPORT; //设置sty

ghosthhh的专栏 706

CListCtrl 部分用法

表控件 CListCtrl CListCtrl m_List; 1.关联对象与控件ID 用SubclassDlgItem关联,第一个参数是要关联控件的ID,第二个是指向父窗口的指针 例: m_List.SubclassDlgItem(IDC_EDIT1,this); 2.设置表第一项为含有复选框的 SetExtendedStyle用来设置表的风格,要达

luhongji的专栏 995

CListCtrl学习笔记(2)---中级篇(1)如何使CListCtrl完全可编辑?

http://www.programfan.com/blog/article.asp?id=21881CListCtrl学习笔记(2)---中级篇(1)(2006-12-24 14:53:00)【收藏】 【评论】 【打印】 【关闭】  专题1: 如何使CListCtrl完全可编辑?  1.       背景 : 我们知道如果CL

skyremember的专栏 1544

MFC中如何使用CListCtrl可以编辑,并添加鼠标右键及双击事件。

通过以上步骤,你可以在MFC中使用CListCtrl实现编辑功能,并添加鼠标右键和双击事件的处理。通过以上步骤,你可以在MFC中使用CListCtrl实现编辑功能,并添加鼠标右键和双击事件的处理。

学无止尽,谨言慎行! 2462

CListCtrl的用法总结

1 CListCtrl的风格 CListCtrl的风格有四种: LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标LVS_LIST: 显示一带有小图标的itemLVS_REPORT: 显示item详细资料 分别对应着资源管理器查看菜单下的大图标,小图标,表,详细资料。 可以在控件属性视图下设置:View属性. 也可以用代

放飞梦想,成就未来 1万+

CListCtrl双击头改变宽度

LRESULT CListCtrlTip::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) {     if (WM_NOTIFY == message)     {         NMHEADER *pHDN = (LPNMHEADER)lParam;         switch(((NMHDR*)lParam)->

学而不思则罔 1378

关于CListCtrl 实际项目中的一些简单使用

只是一些简单的使用技巧整理 1.CListCtrl初始化 CListCtrl m_List;  LONG lStyle;  lStyle = GetWindowLong(m_List.m_hWnd, GWL_STYLE);//获取当前窗口style  lStyle |= LVS_REPORT; //报表风格 //LVS_EX_GRIDLINES 只能选中一行  SetWindowLo

maxiaosheng521的专栏 763

IEC 62623-2022 RLV 台式机和笔记本电脑-能耗测量.pdf

IEC 62623-2022 RLV 台式机和笔记本电脑-能耗测量.pdf

上一篇: IE与FireFox下扩展开发插件收藏
下一篇: 在(CListView)列表中添加右键菜单方法
skyremember
博客等级 码龄20年 203粉丝 484原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值