Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как передать в WndProc некий параметр?


@!!ex ©   (2009-06-16 15:27:00) 

Суть проста, создается множество окон, обрабатываются все одной WndProc.
Нужно передавать некий ID, по которому можно отличить одно окно от другого. Hwnd не подходит, потому что тогда придется делать таблицу соответствий HWnd->ID, что не радует.


Игорь Шевченко   (2009-06-16 16:07:00) [1]


> cbWndExtra - это размер дополнительных данных?


Да, кратен четырем обычно, заполняется при вызове RegisterClass


> а обращаться через GWL_USERDATA?


Обращаться через GetWindowLong(hWnd, 0), GetWindowLong(hWnd, 4)...

RTFM: GetWindowLong

GWL_USERDATA есть у каждого окна, но не факт, что оно не используется до тебя или после тебя.


Leonid Troyanovsky   (2009-06-16 16:06:00) [2]


> @!!ex ©   (16.06.09 15:27)  

> Суть проста, создается множество окон, обрабатываются все
> одной WndProc.

See MakeObjectInstance function.

--
Regargs, LVT.


@!!ex   (2009-06-16 15:55:00) [3]

Нет, DWL_USER

А GWL_USERDATA без дополнительных ухищрений?
Это типа как Tag в дельфи?


@!!ex   (2009-06-16 15:54:00) [4]

cbWndExtra - это размер дополнительных данных?
а обращаться через GWL_USERDATA?


@!!ex   (2009-06-16 15:53:00) [5]

> [7] Игорь Шевченко ©   (16.06.09 15:50)

Не понял...


Игорь Шевченко   (2009-06-16 15:50:00) [6]

@!!ex ©   (16.06.09 15:40) [5]

Если сам создаешь окна, зарезервируй под них место в классе (cbWndExtra) и суй туда данные через SetWindowLong


Юрий Зотов   (2009-06-16 15:48:00) [7]

Тогда либо [1], либо Set/GetProp.


Юрий Зотов   (2009-06-16 15:40:00) [8]

В общем, если это чистые окна Windows, то я бы посмотрел в сторону Set/GetProp, а если Wincontrol'ы Delphi - то в сторону Tag.


@!!ex   (2009-06-16 15:40:00) [9]

> [1] clickmaker ©   (16.06.09 15:32)

Да, я примерно об этом и думаю.


> [2] Юрий Зотов ©   (16.06.09 15:33)

Чистый API.


clickmaker   (2009-06-16 15:37:00) [10]

> это чистые окна Windows

лето... пора мыть окна Windows -)


Юрий Зотов   (2009-06-16 15:33:00) [11]

Уточните - это чистые окна Windows, или WinControl'ы Delphi?


clickmaker   (2009-06-16 15:32:00) [12]

CreateWindow, параметр hMenu
потом GetWindowLong GWL_ID


Наверх

Титульная страница Поиск, карта сайта Написать письмо