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

Вниз

Как рлдменить оконную ф-цию окна, зная его хэндл?   Найти похожие ветки 

 
Simon ©   (2003-12-01 21:56) [0]

Приветствую уважаемые мастера! Вопрос такой. Как подменить оконную функцию чужого окна(TMemo), зная его хэндл? Пишу следующий код:

//-----------------------------------------------------------
procedure TForm1.ChangeWndProcClick(sender: TObject);
begin
SetWindowLong(MemoHandle,GWL_WNDPROC,integer(@NewProc));
end;
//-----------------------------------------------------------
//-----------------------------------------------------------
function NewProc(OldProc: pointer; h: HWND; m: MSG; wp: WParam; lp: LParam): LRESULT;
type TProc = function(h: HWND; m: MSG; wp: WParam; lp: LParam): LRESULT;
var pp: ^TProc;
begin
MessageBeep(MB_OK);
pp:=TProc(OldProc);
pp^(h,m,wp,lp);
end;
//-----------------------------------------------------------

Всё это в DLL. MessageBeep срабатывает, а потом ошибка... Подскажите пожалуйста, где я не прав(если можно, кусочек рабочего кода).


 
Simon ©   (2003-12-01 22:05) [1]

...или хотя бы где почитать на русском(в хэлпе туман)


 
jonni ©   (2003-12-01 22:34) [2]

procedure TForm1.ChangeWndProcClick(sender: TObject);
begin
oldproc:=SetWindowLong(MemoHandle,GWL_WNDPROC,integer(@NewProc));
end;

function NewProc(h: HWND; m: MSG; wp: WParam; lp: LParam): LRESULT;
begin
MessageBeep(MB_OK);
Result:=CallWndProc(oldproc,h,m,wp,lp);
end;


 
jonni ©   (2003-12-01 22:35) [3]

var
oldproc:Pointer;


 
jonni ©   (2003-12-01 22:37) [4]

i esche luchshe vego na skol"ko ya ponimayu sdelat"

NewProc(h: HWND; m: MSG; wp: WParam; lp: LParam): LRESULT; stdcall <-- opisat" v classe Form1

i

function TForm1.NewProc(h: HWND; m: MSG; wp: WParam; lp: LParam): LRESULT;


 
Simon ©   (2003-12-01 23:37) [5]

Пасиба блин бальшое!!! бальшое блин спасиба!!! блин :)


 
BiN ©   (2003-12-02 10:27) [6]

Да-а вот только не CallWndProc а CallWindowProc


 
nikkie ©   (2003-12-02 10:52) [7]

Всего пару дней назад сам столкнулся. Нужно быть аккуратнее, если окно unicode-овское. Например, при замене WndProc стандартным образом (как в [2]) окна в WebBrowser, находящегося в designMode, переставали вводиться русские буквы и прочие unicode-символы.

Вот здесь информация, как обойти эту проблему:
http://www.codeproject.com/win32/safesubclassing.asp



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

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

Наверх




Память: 0.48 MB
Время: 0.02 c
1-16289
GS
2004-01-26 02:42
2004.02.06
Ч-з что работать с xml


3-16101
CraKer
2004-01-10 23:12
2004.02.06
Сортировка по алфавиту


4-16809
volser
2003-11-29 13:25
2004.02.06
Потоки


1-16425
cyborg
2004-01-21 17:31
2004.02.06
Перевод текста KOI8 или других кодировок в нормальный вид


1-16302
kaginava
2004-01-28 14:39
2004.02.06
Определить изменение файла