ListCtrl两大问题,在线等。 1.如何像windows我的电脑中的那个list一样,单击选中(选中的项变色),双击相应另一个事件(AfxMessageBox("double")).想了好久,不明。2.SetIconSpacing(int cx, int cy)只对icon有用,如果想在small icon下增大两项的间距,该怎样?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1 click use system and use ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk) TO DoubleJiang(Double) 能说得再明白一点吗?我还不是很懂 CView or CDialog ? listctrl直接就支持这两个消息的(发给父窗口的), NM_CLICK, NM_DBLCLK, 单击缺省就是select,你只需要处理双击的消息就可以了 2我也不清楚了,MSDN里写着也只是对LVS_ICON起作用的。如果硬要改,那就用CustomDraw自己画吧,也不是很复杂 加入函数OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) {//******************* 得到当前的行( No 全局 )******************// CString No=m_list.GetItemText(m_list.GetSelectionMark(),0); CDiadlg dlg; // 对单击时 弹出“具体操作” 对话框 dlg.DoModal(); m_list.DeleteAllItems(); // ***********刷新内容 Getlist(); // ******************// No=""; // 当鼠标点击空白处//在对应的对话框的类中函数进行No的if判断。不知能否帮你。 忘了一句,Getlist()是对list控件的赋值,配合DeletAllItem()可以做到刷新List控件的效果 我是这样写的,但点上去就弹出来,我的意思是单击选中,双击弹出MessageBox,大家帮帮忙void CListCtrlDlg::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; CString sTemp; if((pNMListView->uOldState & LVIS_SELECTED) == 0 && (pNMListView->uNewState & LVIS_SELECTED) == LVIS_SELECTED) { sTemp.Format("%d got selected",pNMListView->iItem); AfxMessageBox(sTemp); } *pResult = 0;} To DoubleJiang(Double)是Dialog 在 .h文件中 afx_msg void OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnClickList(NMHDR* pNMHDR, LRESULT* pResult);在 .cpp文件中BEGIN_MESSAGE_MAP(CTest2Dlg, CDialog) //{{AFX_MSG_MAP(CTest2Dlg) ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList) ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList) //}}AFX_MSG_MAPEND_MESSAGE_MAP()void CListCtrlDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR); int nItem= pNMLV->iItem; if (nItem >= 0 ) { CString sTemp; sTemp.Format("%d got selected",nItem); AfxMessageBox(sTemp); } *pResult = 0;}void CListCtrlDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR); int nItem= pNMLV->iItem; *pResult = 0;}你试试行不。 To coolover(我很懒惰) 行了 50分晚上结贴 如果在small icon下增大两项的间距,最好不通过调整icon的大小,否则选中的时候很难看的大家帮帮忙 看这个例子:http://www.codeguru.com/listview/change_row_height.shtml 一个以前很少人回答的小问题,关于Windows服务编程 【新手问题】多线程变量共享 如何把磁盘目录结构生成xml文件 ADO如何获取数据库中所有表名和表的所有字段名称及字段类型 请问 ,我该如何控制这个 COMBO BOX? 在线等。。。。 一个简单的问题。。请问MFC默认的显示隐藏工具栏是怎么实现的? 求解错误: 无法解析的外部符号,该符号在函数XXX中被引用,少了什么头文件吗?望指点,谢谢! VC环境使用的一个问题 大家用过WINDOWS的NET SEND 命令吗? 菜鸟问题:vc连接错误 解决者10分 如何控制窗体最大化的尺寸? 哪位大侠有用vc进行图像处理开发的好书啊?
{//******************* 得到当前的行( No 全局 )******************//
CString No=m_list.GetItemText(m_list.GetSelectionMark(),0); CDiadlg dlg; // 对单击时 弹出“具体操作” 对话框
dlg.DoModal();
m_list.DeleteAllItems(); // ***********刷新内容
Getlist(); // ******************//
No=""; // 当鼠标点击空白处//
在对应的对话框的类中函数进行No的if判断。
不知能否帮你。
void CListCtrlDlg::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
CString sTemp;
if((pNMListView->uOldState & LVIS_SELECTED) == 0 &&
(pNMListView->uNewState & LVIS_SELECTED) == LVIS_SELECTED)
{
sTemp.Format("%d got selected",pNMListView->iItem);
AfxMessageBox(sTemp); }
*pResult = 0;
}
是Dialog
afx_msg void OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnClickList(NMHDR* pNMHDR, LRESULT* pResult);
在 .cpp文件中
BEGIN_MESSAGE_MAP(CTest2Dlg, CDialog)
//{{AFX_MSG_MAP(CTest2Dlg)
ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList)
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()void CListCtrlDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
int nItem= pNMLV->iItem;
if (nItem >= 0 )
{
CString sTemp;
sTemp.Format("%d got selected",nItem);
AfxMessageBox(sTemp);
}
*pResult = 0;
}void CListCtrlDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
int nItem= pNMLV->iItem;
*pResult = 0;
}
你试试行不。
大家帮帮忙