|
这是我参考别人在mfc下的代码,为什么单击列表控件的某一项后,对话框和列表控件都不见了,应该在哪里修改一下
- case NM_CLICK:
- BeginEdit(hdlg,pnmhdr,&pNmView->itemNew.lParam);
- break;
- //--------~~~~~~
- void BeginEdit(HWND hnd, NMHDR* pNMHDR, LRESULT* pResult)
- {
- int nItem, nSubItem;
- m_list.Invalidate();
- HWND hWnd = GetDlgItem(hnd,IDC_LIST1);
- LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE) pNMHDR;
- RECT rect;
- //获得行数
- nItem = temp->iItem;
- // nItem = lvinfo.iItem;
- //获得列数
- nSubItem = temp->iSubItem;
- // nSubItem = lvinfo.iSubItem;
- if(nSubItem == 0 || nSubItem == -1 || nItem == -1)
- return ;
- //恢复列表项里的文字
- CString str = m_list.GetItemText(nItem ,nSubItem);
- RECT rect1,rect2;
- //这个宏用来恢复选择项的矩形
- ListView_GetSubItemRect(hWnd,temp->iItem,temp->iSubItem,LVIR_BOUNDS,&rect);
- //获得列表控件矩形的大小
- ::GetWindowRect(temp->hdr.hwndFrom,&rect1);
- //获得对话框的矩形
- ::GetWindowRect(hnd,&rect2);
- int x=rect1.left-rect2.left;
- int y=rect1.top-rect2.top;
-
- if(nItem != -1)
- ::SetWindowPos(GetDlgItem(hnd,MY_EDIT1),HWND_TOP,rect.left+x,rect.top +4,rect.right-rect.left - 3,rect.bottom-rect.top -1,NULL);
- ::ShowWindow(::GetDlgItem(hnd,MY_EDIT1),SW_SHOW);
- ::SetFocus(::GetDlgItem(hnd,MY_EDIT1));
- //围绕子选项选项画一个矩形
- ::Rectangle(::GetDC(temp->hdr.hwndFrom),rect.left,rect.top-1,rect.right,rect.bottom);
- //把列表项的文字放到文本框里
- ::SetWindowText(::GetDlgItem(hnd,MY_EDIT1),str);
- *pResult = 0;
- }
复制代码 [em5] [em4] [em21] |
|