先上代码:
void CListCtrlTestDlg::OnDblclkListPic(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
NM_LISTVIEW *v = (NM_LISTVIEW *)pNMHDR;
CRect rect;
list->GetSubItemRect(v->iItem,v->iSubItem,LVIR_LABEL,rect);
edit.MoveWindow(rect);
edit.IsShow(TRUE);
*pResult = 0;
}edit 是继承自CEDIT的自定义类.运行后产生的编辑框位置不准确,我在想原因是不是因为逻辑坐标跟设备坐标的转化问题或者是自定义类的错误. 我用的是DIALOG做的界面
正在向办法,有朋友可以给点帮助 先谢谢了.
希望不要是传送门之类的回复.
void CListCtrlTestDlg::OnDblclkListPic(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
NM_LISTVIEW *v = (NM_LISTVIEW *)pNMHDR;
CRect rect;
list->GetSubItemRect(v->iItem,v->iSubItem,LVIR_LABEL,rect);
edit.MoveWindow(rect);
edit.IsShow(TRUE);
*pResult = 0;
}edit 是继承自CEDIT的自定义类.运行后产生的编辑框位置不准确,我在想原因是不是因为逻辑坐标跟设备坐标的转化问题或者是自定义类的错误. 我用的是DIALOG做的界面
正在向办法,有朋友可以给点帮助 先谢谢了.
希望不要是传送门之类的回复.
CRect CEret;
if(m_ctrlListEdit.GetSubItemRect(pNMListView->iItem, pNMListView->iSubItem, LVIR_LABEL, CEret))
{
m_ctrlEditCell.SetRect(&CEret);
CRect offset;
m_ctrlListEdit.GetWindowRect(&offset);
ScreenToClient(&offset);
m_ctrlEditCell.MoveWindow(offset.TopLeft().x + CEret.TopLeft().x + 2, offset.TopLeft().y + CEret.TopLeft().y + 2, CEret.Width(), CEret.Height());
char strCellText[100];
strCellText[0] = NULL;
m_ctrlListEdit.GetItemText(pNMListView->iItem,pNMListView->iSubItem,strCellText,100);
m_ctrlEditCell.SetWindowText(_T(strCellText));
m_ctrlEditCell.ShowWindow(TRUE);
m_ctrlEditCell.SetFocus();
}
m_indexOfCell.x = pNMListView->iItem;
m_indexOfCell.y = pNMListView->iSubItem;
*pResult = 0;然后再写失去光标的代码就可以了