Форум: "WinAPI";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
ВнизПомогите с указателями Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c