Главная страница
    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.48 MB
Время: 0.044 c
2-1124355965
Гость22
2005-08-18 13:06
2005.09.25
Как в поле DBLookupComboBox1 уствновить необходимое ...


8-1115793414
Deka
2005-05-11 10:36
2005.09.25
Нет ли у кого описания для формата RAW фотоаппаратов Olympus?


14-1125085422
Piter
2005-08-26 23:43
2005.09.25
ЦСКА - ЛИВЕРПУЛЬ


2-1124359908
Валя
2005-08-18 14:11
2005.09.25
Как сделать поле для записи.


4-1122893440
Гомункул
2005-08-01 14:50
2005.09.25
А можно автоматом писать версию (билд) exe-шника в label ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский