Не работает вызов сообщения HDM_GETITEM (макрос header_getitem) для элемента управления Header. Макрос возвращает true, но поля переменной типа HD_ITEM не заполняются (содержимое этой структуры вообще остается без изменения). В то же время, вызов header_getitemcount проходит на ура. В чем может быть причина?var
i,cnt:integer;
PHD:^HD_ITEM; //вот эта переменная не заполняется
hP:integer;
buf:pchar;
hB:integer;
begin
//sys_header — handle of Header
cnt:=header_getitemcount(sys_header);
//проходит, возвращает действительное число элементов
hP:=GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE+GMEM_ZEROINIT,sizeof(HD_IT EM));
pHD:=pointer(GlobalLock(hP));
hB:=GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE+GMEM_ZEROINIT,512);
buf:=pchar(GlobalLock(hB));
pHD^.mask:=HDI_TEXT;
pHD^.pszText:=buf;
pHD^.cchTextMax:=100;
b:=header_getitem(sys_header, 1, PHD^); //возвращает true, но в PHD что раньше находилось, то и находится

А нужно, чтобы там был текст того, что в header на соответствующем месте.
end;
ps. Если кто-то знает, как получить при помощи TVM_GETITEM текст из TreeView, просьба также отозваться — проблема аналогичная, только Sendmessage возвращает false.