Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2008, 12:01   #1
Tihon
Пользователь
 
Регистрация: 18.12.2007
Сообщений: 40
Печаль Сообщение для ListView

В тестовом примере на форму положен ListView. Прохождение сообщений отслеживаю через SPY++.
Хочу вставлять строки в окно ListView. Все работает.

Код:
var
  Form1: TForm1;
  item : TLVITEM;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
            FillChar( item, sizeof(item), 0 );
            item.mask := LVIF_TEXT;
            item.iSubItem := 0;
            item.iItem := 0;
            item.pszText := 'ИВАНОВ';
            item.lparam := 0;
            SendMessage(ListView1.Handle, LVM_INSERTITEM, 0, LongInt(@Item));
end;
В окне SPY++ (выбраны ВСЕ группы сообщений, фокус - на ListView)ожидаю увидеть - LVM_INSERTITEM и т.д.
Вместо этого при добавлении строки идет только то, что на рисунке.
Почему?!
Изображения
Тип файла: jpg ListView.jpg (26.5 Кб, 161 просмотров)
Tihon вне форума Ответить с цитированием
Старый 19.12.2008, 13:47   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

сообщение LVM_INSERTITEM - это WM_USER плюс сколько то.

LVM_INSERTITEM = LVM_FIRST + 7;
LVM_FIRST = $1000;
WM_USER = $0400;

$1000-$400 = $C00
$C00 = 3072

в общем, как-то так ...

Последний раз редактировалось rpy3uH; 19.12.2008 в 13:49.
rpy3uH вне форума Ответить с цитированием
Старый 19.12.2008, 14:32   #3
Tihon
Пользователь
 
Регистрация: 18.12.2007
Сообщений: 40
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
сообщение LVM_INSERTITEM - это WM_USER плюс сколько то.

LVM_INSERTITEM = LVM_FIRST + 7;
LVM_FIRST = $1000;
WM_USER = $0400;

$1000-$400 = $C00
$C00 = 3072

в общем, как-то так ...
Огромное спасибо... Я сам не допер.
Но почему тогда, если я проделываю аналогичную операцию в аналогичное окно чужого приложения (правда, класса SysListView32!), SPY++ аккуратно показывает LVM_INSERTITEM...? Меня именно это и сбило с толку.

Цитата:
Сообщение от Tihon Посмотреть сообщение
SPY++ аккуратно показывает LVM_INSERTITEM...? Меня именно это и сбило с толку.
Раньше было то, что на скриншоте (см.). Теперь SPY++ и там уже дает WM'ы...
Настройки SPY++ менял... Не получается вернуться с нормальной картине.
Изображения
Тип файла: jpg Spy_1.jpg (6.3 Кб, 149 просмотров)

Последний раз редактировалось rpy3uH; 19.12.2008 в 16:18.
Tihon вне форума Ответить с цитированием
Старый 19.12.2008, 16:41   #4
Tihon
Пользователь
 
Регистрация: 18.12.2007
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Tihon Посмотреть сообщение
Настройки SPY++ менял... Не получается вернуться с нормальной картине.
Вроде сам разобрался. LVM_INSERTITEM с параметрами проходит через SPY++, но LVM_INSERTITEMW или LVM_INSERTITEMA - не проходят. Нету их в списке сообщений SPY++!
А с чем еще, по типу SPY++, можно работать с окнами?

Последний раз редактировалось Tihon; 19.12.2008 в 16:44.
Tihon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Icq сообщение Marsik Помощь студентам 2 10.04.2008 04:22
Звуковое сообщение. Небесный Паскаль, Turbo Pascal, PascalABC.NET 13 17.10.2007 12:24