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

Вниз

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

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

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

Наверх





Память: 0.44 MB
Время: 0.012 c
14-91811
Ihor Osov'yak
2003-07-13 01:18
2003.07.28
Ну и как там


14-91883
BillyJeans
2003-07-07 14:53
2003.07.28
Кто-нибудь писал софт для модема?


9-91612
Universal
2003-02-03 18:22
2003.07.28
Изометрия


8-91770
Denis
2003-04-07 03:20
2003.07.28
Переделать MetafilePict в BMP


14-91890
nick-from
2003-07-10 19:38
2003.07.28
improve your English knowledges





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский