![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
WM_ERASEBKGND не понимает возвращаемое значение. [D5]
MegaVolt © (2005-08-01 14:49:00)В ListView ловлю WM_ERASEBKGND обрабатываю его по своему и пытаюсь выставить Result.
procedure TListViewEx.WMERASEBKGND(var Message: TWMEraseBkgnd);
begin
...
Message.Result:=1;
inherited
end;
Что бы я не присваивал всё равно ListView производит стирание после меня :( Как объяснить что я стёр всё сам? Если убрать штрукшеув то вроде всё получается. Но зачем тогда Result? Или я что то не так делаю?
MegaVolt (2005-08-01 16:19:00) [1]Огромное спасибо всем кто мне помогал. Стало гораздо понятнее :))
Игорь Шевченко (2005-08-01 16:16:00) [2]MegaVolt © (01.08.05 16:08) [14]
> А как нужно было бы поступить если бы результат всё же нужен
> был бы? Просто Result:=... и всё? Или как то сообщение нужно
> было бы дальше отправить?
Результат имеет смысл, если он отправляется тому, кто это сообщение послал, то есть, Windows, в момент обработки сообщения WM_PAINT (оно оттуда изнутре вызывается). Хорошим тоном считается присвоение результата в обработчике сообщений окна (в оконной процедуре).
MegaVolt (2005-08-01 16:08:00) [3]>А причем тут тогда обработка сообщений Windows, результат которой обработки ты присваиваешь ?
:( Ну в справке написано должен вот я и выясняю как это сделать... Я был не в курсе что есть одинаковые сообщения которые нужно обрабатывать и ненужно обрабатывать.
>Результат нужен только для обработки сообщения внутри Windows.
Спасибо понял. Т.е. в моём случае результат роли не играет.
А как нужно было бы поступить если бы результат всё же нужен был бы? Просто Result:=... и всё? Или как то сообщение нужно было бы дальше отправить?
MegaVolt (2005-08-01 16:02:00) [4]>Влияет, просто в данном случает ты не видишь этого.
Почему не влияет? В одном случае стирание должен организовывать тот кто послал сообщение (ListView) в другом случае я сам. Если я ничего в обработчике не вставляю то у меня экран оказывается нестёртым и при Result:=0 и при Result=1; Насколько я понимаю если я пишу 0 то стирание должно происходить.
>кому вернуть? Давай сначала в это разберемся ;)
Скорее всего самому ListView. При изменении на экране он посылает сообщение сам себе(?) я его перехватываю и стираю сам. Result предназначен как я понимаю ListView и обозначает что я его уже стёр.
Так?
Игорь Шевченко (2005-08-01 15:57:00) [5]
> Компоненту :)
А причем тут тогда обработка сообщений Windows, результат которой обработки ты присваиваешь ?
Результат нужен только для обработки сообщения внутри Windows, закрашивать ли окно кистью по умолчанию и к компоненту это совсем не относится
DVM (2005-08-01 15:53:00) [6]
> Хорошо как тогда правильно заполнить Result?
Message.Result:=1; в данном случае, в других читать справку по сообщениям.
> Тогда заполнение или незаполнение Result не на что не влияет
>
Влияет, просто в данном случает ты не видишь этого.
> Что я должен сделать чтобы вернуть нечто????
кому вернуть? Давай сначала в это разберемся ;)
MegaVolt (2005-08-01 15:48:00) [7]Fayсдорово что вы процитировали строчку которую я написал раньше. В ней написано что приложение должно возвращать... Вот я и спрашиваю как это должно возвращать? Что я должен сделать чтобы вернуть нечто????
Fay (2005-08-01 15:46:00) [8]Return Values
An application should return nonzero if it erases the background; otherwise, it should return zero.
MegaVolt (2005-08-01 15:46:00) [9]>inherited не нужен!
Тогда заполнение или незаполнение Result не на что не влияет :( Зачем тогда Result?
MegaVolt (2005-08-01 15:44:00) [10]>бред сивой кобылы
Хорошо как тогда правильно заполнить Result?
DVM (2005-08-01 15:43:00) [11]
> А как без него сообщение уйдёт куда то дальше, и тот кто
> его послал поймёт что я изменил результат?
бред сивой кобылы
miek (2005-08-01 15:41:00) [12]inherited не нужен!
MegaVolt (2005-08-01 15:38:00) [13]А как без него сообщение уйдёт куда то дальше, и тот кто его послал поймёт что я изменил результат?
DVM (2005-08-01 15:36:00) [14]а зачем inherited?
MegaVolt (2005-08-01 15:00:00) [15]Компоненту :)
Т.е. судя по справке я в результате высавляю неноль если я сам всё сделал и дальше стирать не нужно и 0 если нужно стирать.
An application should return nonzero if it erases the background; otherwise, it should return zero.
Игорь Шевченко (2005-08-01 14:56:00) [16]
> Как объяснить что я стёр всё сам?
Кому объяснить ?