У меня есть пользовательский класс, полученный из CListCtrl.Как установить положение элемента управления редактированием, когда EditFilter на CHeaderCtrl
Когда пользователь нажимает на заголовок столбца, я хочу, чтобы он вводил текстовое значение. Я обнаружил, что могу это сделать: CHeaderCtrl :: EditFilter. Я ожидал, что редактирование будет находиться на том же месте, что и текст столбца. На самом деле это рев, поэтому видна только часть контроля и текста. также видна часть ярлыка столбца. Как я могу установить редактировать положение, охватываемый прямоугольником прочитан CHeaderCtrl :: GetItemRect
void Data_list::OnHdnItemclickpointslist(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
CHeaderCtrl* header = this->GetHeaderCtrl();
CRect rect;
header->GetItemRect(phdr->iItem , rect);
int iFilter = header->EditFilter(phdr->iItem , TRUE);
// how to set position of edit
*pResult = 0;
}
Я бы предположил, что верхний левый угол ListView составляет около 4 пикселей на 10 пикселей от верхнего левого угла родительского окна. Чтобы найти это смещение, вы должны использовать 'ClientToScreen'. Или убедитесь, что элемент управления ListView является родительским элементом элемента управления Edit. –
ОК, я могу это сделать, но расчет правильной позиции - это не то, что мне нужно. Для меня важнее узнать, как я могу получить указатель на это редактирование. –
На самом деле я не читал вопрос правильно, мой предыдущий комментарий не имеет смысла. Я не знаком с сообщением «HDM_EDITFILTER» и почему он это делает. –