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

Вниз

WM_ERASEBKGND не понимает возвращаемое значение.   Найти похожие ветки 

 
MegaVolt ©   (2005-08-01 14:49) [0]

В ListView ловлю WM_ERASEBKGND обрабатываю его по своему и пытаюсь выставить Result.


procedure TListViewEx.WMERASEBKGND(var Message: TWMEraseBkgnd);
begin
 ...
 Message.Result:=1;
 inherited
end;


Что бы я не присваивал всё равно ListView производит стирание после меня :( Как объяснить что я стёр всё сам? Если убрать штрукшеув то вроде всё получается. Но зачем тогда Result? Или я что то не так делаю?


 
Игорь Шевченко ©   (2005-08-01 14:56) [1]


>  Как объяснить что я стёр всё сам?


Кому объяснить ?


 
MegaVolt ©   (2005-08-01 15:00) [2]

Компоненту :)

Т.е. судя по справке я в результате высавляю неноль если я сам всё сделал и дальше стирать не нужно и 0 если нужно стирать.

An application should return nonzero if it erases the background; otherwise, it should return zero.


 
DVM ©   (2005-08-01 15:36) [3]

а зачем inherited?


 
MegaVolt ©   (2005-08-01 15:38) [4]

А как без него сообщение уйдёт куда то дальше, и тот кто его послал поймёт что я изменил результат?


 
miek ©   (2005-08-01 15:41) [5]

inherited не нужен!


 
DVM ©   (2005-08-01 15:43) [6]


> А как без него сообщение уйдёт куда то дальше, и тот кто
> его послал поймёт что я изменил результат?

бред сивой кобылы


 
MegaVolt ©   (2005-08-01 15:44) [7]

>бред сивой кобылы

Хорошо как тогда правильно заполнить Result?


 
Fay ©   (2005-08-01 15:46) [8]

Return Values
An application should return nonzero if it erases the background; otherwise, it should return zero.


 
MegaVolt ©   (2005-08-01 15:46) [9]

>inherited не нужен!

Тогда заполнение или незаполнение Result не на что не влияет :( Зачем тогда Result?


 
MegaVolt ©   (2005-08-01 15:48) [10]

Fay сдорово что вы процитировали строчку которую я написал раньше. В ней написано что приложение должно возвращать... Вот я и спрашиваю как это должно возвращать? Что я должен сделать чтобы вернуть нечто????


 
DVM ©   (2005-08-01 15:53) [11]


> Хорошо как тогда правильно заполнить Result?

Message.Result:=1; в данном случае, в других читать справку по сообщениям.


> Тогда заполнение или незаполнение Result не на что не влияет
>

Влияет, просто в данном случает ты не видишь этого.

> Что я должен сделать чтобы вернуть нечто????

кому вернуть? Давай сначала в это разберемся ;)


 
Игорь Шевченко ©   (2005-08-01 15:57) [12]


> Компоненту :)


А причем тут тогда обработка сообщений Windows, результат которой обработки ты присваиваешь ?
Результат нужен только для обработки сообщения внутри Windows, закрашивать ли окно кистью по умолчанию и к компоненту это совсем не относится


 
MegaVolt ©   (2005-08-01 16:02) [13]

>Влияет, просто в данном случает ты не видишь этого.

Почему не влияет? В одном случае стирание должен организовывать тот кто послал сообщение (ListView) в другом случае я сам. Если я ничего в обработчике не вставляю то у меня экран оказывается нестёртым и при Result:=0 и при Result=1; Насколько я понимаю если я пишу 0 то стирание должно происходить.

>кому вернуть? Давай сначала в это разберемся ;)

Скорее всего самому ListView. При изменении на экране он посылает сообщение сам себе(?) я его перехватываю и стираю сам. Result предназначен как я понимаю ListView и обозначает что я его уже стёр.

Так?


 
MegaVolt ©   (2005-08-01 16:08) [14]

>А причем тут тогда обработка сообщений Windows, результат которой обработки ты присваиваешь ?

:( Ну в справке написано должен вот я и выясняю как это сделать... Я был не в курсе что есть одинаковые сообщения которые нужно обрабатывать и ненужно обрабатывать.

>Результат нужен только для обработки сообщения внутри Windows.

Спасибо понял. Т.е. в моём случае результат роли не играет.

А как нужно было бы поступить если бы результат всё же нужен был бы? Просто Result:=... и всё? Или как то сообщение нужно было бы дальше отправить?


 
Игорь Шевченко ©   (2005-08-01 16:16) [15]

MegaVolt ©   (01.08.05 16:08) [14]


> А как нужно было бы поступить если бы результат всё же нужен
> был бы? Просто Result:=... и всё? Или как то сообщение нужно
> было бы дальше отправить?


Результат имеет смысл, если он отправляется тому, кто это сообщение послал, то есть, Windows, в момент обработки сообщения WM_PAINT (оно оттуда изнутре вызывается). Хорошим тоном считается присвоение результата в обработчике сообщений окна (в оконной процедуре).


 
MegaVolt ©   (2005-08-01 16:19) [16]

Огромное спасибо всем кто мне помогал. Стало гораздо понятнее :))



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

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

Наверх




Память: 0.51 MB
Время: 0.05 c
3-1123475272
АлеКо
2005-08-08 08:27
2005.09.25
поведение ADODataSet в Master-Detal


1-1125940732
hgd
2005-09-05 21:18
2005.09.25
Записать файл на сервер


9-1117097360
Buzzz
2005-05-26 12:49
2005.09.25
Аналог TMemo в GLScene


4-1122611364
Galim
2005-07-29 08:29
2005.09.25
TComPortDriver


2-1124100430
Viktop
2005-08-15 14:07
2005.09.25
ScreenSaver на Delphi