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

Reply via email to