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

Вниз

Изменения обработчика сообщений у контрола.   Найти похожие ветки 

 
User   (2003-05-25 19:00) [0]

Мастера хочется узнать правильно ли написан обработчик ?


var
...
OldRichEditProc : Pointer;
...

Function NewRichEditProc(hWindow: THandle; uMsg, wParam, lParam: Integer): Integer; Stdcall;
Begin
If uMsg = WM_PAINT Then
Begin
// Тут я пишу свой код
End
Else
Result := CallWindowProc(OldRichEditProc, hWindow, uMsg, wParam, lParam);
End;


в главном обработчике окна :


Function MainWindowProc(hWindow: THandle; uMsg, wParam, lParam: Integer): Integer; Stdcall; Export;
Var
I : Integer;
...
Case uMsg Of
...
WM_SHOWWINDOW:
Begin
I := GetDlgItem(hWindow, IDC_RICHEDIT); // Код RichEdit контрола
OldRichEditProc := Pointer(GetWindowLong(I, GWL_WNDPROC));
SetWindowLong(I, GWL_WNDPROC, LongInt(@NewRichEditProc));
Result := 0;
End;
...


Работает нормально, но смущает то, что код инициализации приходится писать в WM_SHOWWINDOW т.к. в WM_CREATE еще не удается получить HWND у IDC_RICHEDIT (Контрол не создается, а берется из ресурсного файла).


 
Nick Denry ©   (2003-05-25 19:03) [1]

сабклассинг.......................


 
User   (2003-05-25 19:06) [2]

2 Nik Denry.

Да это оно и есть :)


 
Nick Denry ©   (2003-05-25 19:16) [3]

Если окно создавать не на wm_create, а после бегина, то ричьедит можно создавать после создания окна. Там HWND и получишь!



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

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

Наверх




Память: 0.47 MB
Время: 0.014 c
3-91653
oleg_SYS
2003-07-05 17:43
2003.07.28
Графика в MS Access


1-91705
Calm
2003-07-14 17:24
2003.07.28
Как показывать флэш-анимацию на форме?


7-91919
Freeze
2003-05-16 12:58
2003.07.28
Как запустить командную строку с параметрами в Win2k


3-91692
Larisa
2003-07-06 20:29
2003.07.28
Подскажите пожалуйста, как обеспечить удаленный доступ к данным


3-91656
anatolyk
2003-07-06 11:06
2003.07.28
Разрядность