Perform не отправляет сообщение

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Perform не отправляет сообщение

Сообщение Browny » 18.09.2007 17:31:56

Уважаемые форумчане, есть вопрос:

Код: Выделить всё
PageControl1.Perform(TCM_SETIMAGELIST, 0, smallimage.Handle)
- этот код не работает.

Код: Выделить всё
SendMessage(PageControl1.Handle, TCM_SETIMAGELIST, 0, smallimage.Handle)
- этот код - работает.

есть объяснения? Может, есть опция компилятора для этого, а я не знал?
У меня в Lazarus используется уже -dPassWin32MessagesToLCL.
Аватара пользователя
Browny
новенький
 
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

Сообщение Sergei I. Gorelkin » 19.09.2007 13:03:47

Метод Perform не предназначен для отправки сообщений.
В Дельфи он вызывает оконную процедуру контрола, как если бы сообщение было на самом деле отправлено.
При этом сообщение в конце концов может попасть в Windows из-за того, что для необработанных сообщений вызывается DefWindowProc.

Этот механизм может работать только в Windows, поэтому в LCL его нет.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1397
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Browny » 19.09.2007 15:54:09

Sergei I. Gorelkin, спасибо! Ситуация ясна.
Аватара пользователя
Browny
новенький
 
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 65

Рейтинг@Mail.ru