首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

可编者的listcontrol

2013-01-22 
可编辑的listcontrol可编辑的listCtrl控件失败(没有采用子类化,直接在dialog 中处理)ON_NOTIFY(NM_CLICK,

可编辑的listcontrol



可编辑的listCtrl控件失败(没有采用子类化,直接在dialog 中处理)

ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList)




CListCtrlm_List; 

对话框上方了一个Edit控件



关键代码:
::ShowWindow(::GetDlgItem(m_hWnd,IDC_EDIT1),SW_HIDE);
::SetParent(::GetDlgItem(m_hWnd,IDC_EDIT1),m_List.GetSafeHwnd());



void CMyDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
{

LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE) pNMHDR;

if( (temp->iItem< 0 )|| (temp->iSubItem<0) )
return ;

CString str = GetItemText(temp->hdr.hwndFrom,temp->iItem ,temp->iSubItem);

RECT rect;//子矩形大小

ListView_GetSubItemRect(temp->hdr.hwndFrom,temp->iItem,temp->iSubItem,LVIR_BOUNDS,&rect);

::MoveWindow(::GetDlgItem(m_hWnd,IDC_EDIT1),rect.left+1,rect.top+1,rect.right-1,rect.bottom-1,TRUE);

::ShowWindow(::GetDlgItem(m_hWnd,IDC_EDIT1),SW_SHOW);

::UpdateWindow(::GetDlgItem(m_hWnd,IDC_EDIT1));

::SetFocus(::GetDlgItem(m_hWnd,IDC_EDIT1));

::SetWindowText(::GetDlgItem(m_hWnd,IDC_EDIT1),str);

*pResult = 0;
}

 结果不管用啊 ,失败了,点击某个子项的时候,不能够编辑!




[解决办法]
怎么不用LVS_EDITLABELS 

[解决办法]
那些自己派生的一般都是 继承的CListCtrl,CEdit这2个类的。主要就是在点中的地方创建一个Edit来实现的。你这代码是移动了一个Edit来实现这个效果的。你这代码是直接写在了dlg那个文件中,还是可以的,只是重用不方便。主要是封装成类。

热点排行