On Mon, 28 Aug 2006 02:45:55 +0200
Borut Maricic <[EMAIL PROTECTED]> wrote:
> Here I am again.
>
> In win32 widgetset, win32callback.inc, in WindowProc,
> in code
> WM_CHAR:
> Begin
> PLMsg:[EMAIL PROTECTED];
> With LMChar Do
> Begin
> Msg := CN_CHAR;
> KeyData := LParam;
> CharCode := Word(WParam);
> CharCode gets correctly filled with values >255.
> However, further below, in code
> CN_CHAR, CN_SYSCHAR:
> begin
> // if key not yet processed, let windows process it
> WinProcess := LMChar.Result = 0;
> WParam := LMChar.CharCode;
> LMChar.CharCode is already truncated to the lower byte.
>
> The reason seems to be in wincontrol.inc (not an interface
> area), in DoKeyPress:
> if not (csNoStdEvents in ControlStyle)
> then with Message do
> begin
> C := char(CharCode);
> KeyPress(C);
> CharCode := Ord(C);
> if Char(CharCode) = #0 then Exit;
> end;
>
> Now, of course, DoKeyPress can not do the trick and I see
> there IntfUTF8KeyPress which calls controls.DoUTF8KeyPress.
>
> However, even after trying to see how this is used in gtk, I
> feel lost.
>
> Any help and direction showing available?
DoKeyPress is for ascii keys and DoUTF8KeyPress is for any key (UTF-8 encoded).
The widgetset should call IntfUTF8KeyPress *before* sending the ascii
key message to the LCL.
Mattias
_________________________________________________________________
To unsubscribe: mail [EMAIL PROTECTED] with
"unsubscribe" as the Subject
archives at http://www.lazarus.freepascal.org/mailarchives