Оконная процедура

GAME

Общий вопрос.Вот при создании окна через функ-ю CreateWindows , через параметр Lparam можно что-то передать в оконную процедуру будущего окна? И ещё вопрос что можно передавать(какие типы данных) через сенд мессадж???Ну и ещё вопросик. если через лпарам ничего стоящего окну нельзя передать,то как можно тогда?просто хочеться не использовать внешние переменные ...Насколько я выяснил, через вПарам можно слать указатели. вот.только неудобно получаеться.если тебе нужно из одной оконной процедуры в другую переслать указатель...я пока придумал так:
SendMessage(CreateWindowA(szStatWindow,"Статистика",WS_VISIBLE | WS_EX_TOPMOST | WS_SYSMENU,200,200,600,600,MainWindow,NULL,hInst,NULL),WM_CREATE,(WPARAM)&y,NULL);
тобишь создаём окно и шлём туда например ВМ_КРЕЙТ и наш указатель - адрес у ...но неудобно както.
2 ответа

GAME

Ты можешь отправлять окну любые сообщения, в том числе и самостоятельно определенные (рекомендуется, чтобы они были больше WM_USER). То, что ты написал, не совсем верно. Сообщение WM_CREATE посылается окну системой по умолчанию, без твоего участвия. Твой код можно переписать как:
CreateWindowA(szStatWindow,"Статистика",WS_VISIBLE | WS_EX_TOPMOST | WS_SYSMENU,200,200,600,600,MainWindow,NULL,hInst, &y)
а в оконной процедуре при обработке WM_CREATE вытаскивать это значение из lpCreateParams структуры CREATESTRUCT, адрес на которую передается в lParam.


GAME

звучит убедительно ))) вроде то,что нужно...сейчас попробую.Уууууу!!!круто ))) именно это я и хотел узнать!)при обработке WM_CREATE
CREATESTRUCT *createSt;
createSt=(CREATESTRUCT *)lParam;
Sez=(Season *)createSt->lpCreateParams;
всё работает)) гуд))) биг сенкс)