Главная страница
    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.031 c
7-16776
Lserge
2003-11-22 11:49
2004.02.06
изменение звуков программных событий


7-16761
AndriyS
2003-11-17 15:27
2004.02.06
getvolumeinformation


9-16014
lokid7
2003-07-21 12:07
2004.02.06
Помогите мне в D3D


1-16501
Sergioly
2004-01-27 14:30
2004.02.06
Как запустить дос-прогу без вывода ее окна в Delphi


3-16073
Zamik
2004-01-12 11:02
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский