<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个回答: 更正: 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控件 |
请问如何获得CListCtrl控件的当前选择项(单选和多选)?谢谢。
请问如何获得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