Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.035 c
1-16436
Kolega
2004-01-28 11:11
2004.02.06
Работа со строками


4-16808
Alexis
2003-11-30 14:44
2004.02.06
Время создания директории.


14-16600
ёё
2004-01-15 14:10
2004.02.06
Что есть пиринговые сети?


1-16500
SVS-12345678
2004-01-27 14:32
2004.02.06
vcf132.ocx и InstallShield Express Borland Limited Edition


3-16189
www85
2004-01-13 09:09
2004.02.06
Постоянно вылетает ошибка!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский