Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.009 c
1-8343
Talla2k
2003-10-22 21:42
2003.11.03
поиск компонента


6-8570
Jacob
2003-09-05 16:21
2003.11.03
Работа с Internet Explorer ом


14-8673
Zergling
2003-10-12 10:03
2003.11.03
Заправка катриджа для HP 840С - черный


14-8625
Омлет
2003-10-14 21:39
2003.11.03
Верхушка потрепаться


1-8509
Term
2003-10-24 17:44
2003.11.03
В чём ошибка???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский