Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.03;
Скачать: CL | DM;

Вниз

Помогите с указателями   Найти похожие ветки 

 
konstantinov ©   (2003-08-30 23:04) [0]

Уважаемые мастера! Решил подвигать иконки на рабочем столе. Нашел пример:

SendMessage(DesktopHandle, LVM_SETITEMPOSITION,Index, MAKELPARAM(X,Y));

осталась одна проблема, чтобы сохранить прежний порядок значков необходимо знать координаты до перемещения. Накопал:

SendMessage(DesktopHandle, LVM_GETITEMPOSITION,Index, LPARAM );

по справке:

LVM_GETITEMPOSITION

The LVM_GETITEMPOSITION message retrieves the position of a list view item. You can send this message explicitly or by using the ListView_GetItemPosition macro.

LVM_GETITEMPOSITION
wParam = (WPARAM) (int) i;
lParam = (LPARAM) (POINT FAR *) ppt;

Parameters

i

Index of the list view item.

ppt

Pointer to a POINT structure that receives the position of the item"s upper-left corner, in view coordinates.

Return Values

Returns TRUE if successful or FALSE otherwise.

Если я правильно понимаю параметр LPARAM должен быть указателем на переменную типа TPoint, в которую возвращается результат.

как корректно получить координаты инконки?

var
M : TPoint;
begin
...
SendMessage(DesktopHandle, LVM_GETITEMPOSITION, I, @M ); [Error] Unit1.pas(45): Incompatible types: "Integer" and "Pointer"

почему ошибка? Ведь адрес 32-х разрядное целое и на мой взгляд должно быть совместимо с типом integer

Извините за ламерство, но с этими указателями... черт бы их побрал... никак не научусь с ними правильно работать.


 
Романов Р.В. ©   (2003-08-30 23:15) [1]

SendMessage(DesktopHandle, LVM_GETITEMPOSITION, I, Integer(@M));


> почему ошибка? Ведь адрес 32-х разрядное целое и на мой
> взгляд должно быть совместимо с типом integer

Совместимо, но типы разные. Это и не нравится компилятору.


 
Anatoly Podgoretsky ©   (2003-08-30 23:17) [2]

LPARAM объявлен как LongInt, поэтому надо привести к этому типу, иначе справедливо будет ругаться LongInt(@M)


 
Anatoly Podgoretsky ©   (2003-08-30 23:18) [3]

Романов Р.В. © (30.08.03 23:15) [1]
К Integer не желательно приводить


 
Романов Р.В. ©   (2003-08-30 23:31) [4]

согласен


 
konstantinov ©   (2003-08-30 23:34) [5]

SendMessage(DesktopHandle, LVM_GETITEMPOSITION, I, LongInt(@M) );
Memo1.Lines.Add(IntToStr(M.x)+" "+IntToStr(M.Y));

результат M.x = 0, M.Y = 0 для всех значков. Что я не иак делаю?


 
Всеволод Соловьёв ©   (2003-08-30 23:39) [6]

когда пользуешься АПИ, надо стринги в Pchar"ы преобразовывать


 
konstantinov ©   (2003-08-30 23:49) [7]

Причем тут string и PChar?


 
DVM ©   (2003-08-31 19:34) [8]

DesktopHandle откуда берется?


 
Polevi ©   (2003-09-01 09:54) [9]

ВАП другое, придется внедряться в експлорер



Страницы: 1 вся ветка

Текущий архив: 2003.11.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
14-8599
Lexxx
2003-10-15 11:40
2003.11.03
Помогите разобраться с непонятным железячным глюком


1-8376
saNat
2003-10-22 02:21
2003.11.03
Незнаю в какой форум бросить - прочитайте plz


7-8682
alexsandri
2003-08-23 16:26
2003.11.03
как использовать описание инфоpмационного тэга MP3 ?


14-8623
Думкин
2003-10-13 05:29
2003.11.03
С днем рождения! 13 октября.


1-8367
UPR
2003-10-23 02:16
2003.11.03
Об интерфейсе