Пожалуйста помогите разобраться с проблемой.
Создаю окно класса Scintilla(редактор) и устанавливаю subclass, для получения клавиатурных и мышиных сообщений.
После установки subclass, выяснилось, что некорректно ведет себя клавиатурный ввод русского текста, печатает в окне мусор.
Другие операции с текстом, такие, как copy/paste или чтение из файла - проблем с русским не вызывают.
Если отменить subclass, то русский текст вводится без проблем.
- Код: Выделить всё
#Compile Exe
#Dim All
#Include "Win32API.inc"
#Include "scintilla.inc"
#Include "scilexer.inc"
%ID_Sci = 1000
Global hDlg, hSci, hLib, hOldClass As Dword
Function SubClass(ByVal hWnd As Dword, ByVal wMsg As Dword, ByVal wParam As Dword, ByVal lParam As Long) As Long
Select Case As Long wMsg
Case %WM_SysKeyDown
Case %WM_KeyDown
Case %WM_LButtonUp
Case %WM_RButtonUp
End Select
Function = CallWindowProc(hOldClass, hWnd, wMsg, wParam, lParam)
End Function
Function PBMain() As Long
hLib = LoadLibrary("SCILEXER.DLL")
Dialog New Pixels, 0, "Test Code",300,300,300,400, %WS_OverlappedWindow To hDlg
Control Add "Scintilla", hDlg, %ID_Sci, "", 10,10,280,380, %WS_Child Or %WS_Visible
Control Handle hDlg, %ID_Sci To hSci
hOldClass = SetWindowLong(hSci, %GWL_WNDPROC, CodePtr(SubClass)) ' !!!это создает проблему!!!
Dialog Show Modal hDlg
End Function
Еще раз повторюсь, мне subclass нужен только для получения клавиатурных и мышиных сообщений.
Хук не хочется из за тормозов.
Буду рад любым советам и предложениям.