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

Вниз

Процедура окна Win32 API   Найти похожие ветки 

 
kva   (2003-04-02 11:25) [0]

Пытаюсь сделать так, чтобы сроллинг в одном окне сопровождался скроллингом в другом окне. Оба окна не VCL. Делаю подмену процедуры окна. Если хэндлы окон хранятся в переменных модуля, все OK. Если же помещаю их в поля формы, то получаю ошибку типа AV. При этом вначале сообщения проходят, а при попытке кликнуть по полосе прокрутки задача вылетает.
В конце перед вылетом последовательность сообщений в новой процедуре окна такова:
...
WM_NCSETCURSOR
WM_NCLBUTTONDOWN
WM_SYSCOMMAND
WM_KILLFOCUS
WM_CANCELMODE
EM_CHARFROMPOS
WM_DESTROY
WM_NCDESTROY

Понятно почему вылетает, я пока не обрабатываю DESTROY.
Непонятно, а почему вообще до Destroy дело доходит, почему SYSCOMMAND посылается и как это связано с хэндлами окон.
Может кто сталкивался с такой проблемой?


 
kva   (2003-04-02 12:48) [1]

Уточнение. Даже если только один хэндл окна ( процедуру которого меняем) хранится в переменной модуля, то все проходит нормально. Но если его перенести в Private переменные, то все рушится.


 
kva   (2003-04-02 14:05) [2]

Разобрался в чем ошибка. У меня процедура окна была объявлена как функция внутри метода, поэтому из нее, на этапе разработки, видны были переменные класса (специально извратился). Оказалось, на этапе выполнения, что они недоступны. Как дальше быть еще не знаю. Дело в том, что у меня в модуле нет (и не должно быть) пересенных типа класса формы.
Попробую поработать с методом окна.
Кто работал с MakeObjectInstance? Что это за функция, на пальцах объяснить можете что она делает?


 
Songoku ©   (2003-04-02 17:43) [3]

кароче я попробывал и у меня получилось с двумя Memo.
В процедуре где обрабатываютя окна ты должен это вписать!!!

case msg of
48435:SendMessage({Window2},Msg,wParam,lParam);
115:SendMessage({Window2},Msg,wParam,lParam);
522:SendMessage({Window2},Msg,wParam,lParam);
wm_vscroll:SendMessage({Window2},Msg,wParam,lParam);
wm_hscroll:SendMessage({Window2},Msg,wParam,lParam);
end;

и в процедуде другого окна только вместо Window2 -> Window



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

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

Наверх




Память: 0.47 MB
Время: 0.015 c
1-94879
Ольга
2003-05-20 14:19
2003.05.29
RichEdit


3-94731
Yuraz
2003-05-08 19:28
2003.05.29
DBGrid + выборка


1-94905
sevylor
2003-05-17 05:27
2003.05.29
OS


14-95118
Vlad Oshin
2003-05-12 16:07
2003.05.29
о Проге Секретарь в комплекте к принтеру HP LJ1000a


1-94891
Sergey
2003-05-16 16:10
2003.05.29
Абсолютный путь к файлу