Форум: "Компоненты";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
ВнизБазовые оконные классы и RegisterClassW Найти похожие ветки
← →
capkoh © (2005-11-25 18:46) [0]Этот вопрос не предназначен для тех, кто говорит: "А зачем? Всё уже готовое есть."
Известно, что для того, чтобы окно (TEdit...) могло понимать Юникод, требуется использовать функцию регистрации класса окна - RegisterClassW (при этом функция IsWindowUnicode должна вернуть True; сейчас она возвращает False). Если RegisterClassW не использовать, то сообщения WM_UNICHAR не посылаются, а посылаются WM_CHAR с обрезанным wParam. Суть вопроса в том, как сделать регистрацию окна компонента Delphi (наследника TCustomControl), использую RegisterClassW? По-видимому, нужно что-то делать с процедурой
procedure TWinControl.CreateWnd;
в которой происходит регистрация окна. Но как?
← →
Чапаев © (2005-11-26 10:21) [1]
> нужно что-то делать с процедурой
Ага.
> Но как?
Процедура -- virtual. Сделай в своём классе override, скопируй код TWinControl.CreateWnd и замени RegisterClassA на RegisterClassW.
← →
capkoh © (2005-11-26 13:32) [2]Так просто не получится. Замена на RegisterClassW приведет к смене типа регистрируемого класса на TWNDClassW, а у нас он в:
TCreateParams = record
Caption: PChar;
Style: DWORD;
ExStyle: DWORD;
X, Y: Integer;
Width, Height: Integer;
WndParent: HWnd;
Param: Pointer;
WindowClass: TWndClass;
WinClassName: array[0..63] of Char;
end;
Заменяя тут на TWNDClassW нужно изменить .CreateParams и т.д....
От чего "минимально" можно унаследоваться, чтобы это могло отображаться в дизайнере?
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.042 c