Возникла необходимость создать свой контролл на основе ListView (LVS_REPORT+LVS_EDITLABELS), с возможностью редактирования ячеек (GRID не рассматривается). Был неприятно удивлен, тем что в этом контролле доступно редактирование только ячеек только первой колонки средствами штатного Edit'a (LVM_EDITLABEL, LVM_GETEDITCONTROL). При попытке двигать Edit в разные Rect'ы SubItem'ов пропадает текст редактируемой(первой) ячейки на время пока существует Edit. Есть у кого-нибудь годные сорцы на эту тему, желательно на асме ? Или может инфа дельная ?
Делал я когда то такое, но у меня использовался стиль LVS_OWENDRAWFIXED и без LVS_EDITLABELS, контрол edit создавал отдельно и на форму бросал. Я бы в твоем случае попробовал после перемещения edit, сделать перерисовку строки LVM_REDRAWITEMS, затем еще раз передать фокус Edit-у SetFocus,hedit и перерисовать его InvalidateRect,hedit,0,1
Это не нужно. При перемещении окна оно не теряет фокус и если последний параметр MoveWindow() равен TRUE, то оно перерисовывается автоматически.
Да согласен, забыл, что у меня в старой реализации edit контрол создавался самостоятельно и поэтому я передовая ему фокус.
al79, Вариант с LVM_REDRAWITEMS не проканал Похоже, придется отдельно Edit создавать и контролить. А сорцев в заначке на эту тему никаких не осталось ?