Видел много тем про редактируемый ListView на форуме, но решения своей проблемы не нашел.
А проблема вот в чем. При клике по определенной ячейке в ListView создаю edit control. Все бы хорошо, но когда я устанавливаю для edit'a свою оконную процедуру, то он перестает отображаться. Точнее сказать, отображается под таблицей. А как отобразить его сверху ума не приложу. Если не устанавливать свою функцию обработки для edit'a, то он рисуется сверху ListView. Но если процедуру не устанавливать, не знаю как WM_KILLFOCUS ловить. Такие дела. Вот кусочек кода:
Код | case LVN_ITEMACTIVATE: { if(((LPNMITEMACTIVATE)lParam)->iSubItem==28){//если ячейка находится в 28ом столбце ListView_GetSubItemRect(hList,((LPNMITEMACTIVATE)lParam)->iItem, ((LPNMITEMACTIVATE)lParam)->iSubItem,LVIR_BOUNDS, &lpRect); //получаем координаты ячейки ListView_GetItemText(hList, ((LPNMITEMACTIVATE)lParam)->iItem, 28, buf, 255); //копируем текст из ячейки таблицы в буфер hEdit=CreateWindow( L"edit", buf, WS_CHILD|WS_CLIPSIBLINGS|WS_BORDER|ES_LEFT|WS_VISIBLE, lpRect.left,lpRect.top,lpRect.right-lpRect.left,lpRect.bottom-lpRect.top, hList, HMENU)ID_EDIT, hInst, NULL); SetWindowLong(hEdit,GWL_WNDPROC,(LONG)WndProc2); //устанавливаем оконную процедуру SetFocus(hEdit); //устанавливаем фокус } }
|
Буду очень благодарен за любую помощь! |