可编辑的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那个文件中,还是可以的,只是重用不方便。主要是封装成类。