Hi Brad,

Dialogs in MFC do not capture/receive the WM_CHAR message and that is why I
cannot properly pass it on to the OSG window

you could override CDialog::PreTranslateMessage( MSG* msg ) and do it the
same way is CView from the osgviewerMFC example

-Nick


On Mon, Sep 20, 2010 at 5:29 PM, Brad Huber <br...@procerusuav.com> wrote:

>  Gentlemen,
>
>
>
> I apologize for being inactive on the thread these last few days.  I was on
> vacation at the Reno Air Races J.
>
>
>
> Trajce- to address your point about how to make MFC “work properly”.  The
> example code IS NOT a dialog based MFC app.  My app IS a dialog based MFC
> app.  Dialogs in MFC do not capture/receive the WM_CHAR message and that is
> why I cannot properly pass it on to the OSG window.  Of course there are
> other work arounds that address my particular problem (I believe I’ve
> already fixed it), but I’m trying to bring up the point that this may be a
> fundamental issue in the key handling.
>
>
>
> Robert- One issue with including both the translated and untranslated keys
> in the event is that there is not a one to one mapping.  In windows
> sometimes 3 key presses will translate to one WM_CHAR (translated key)
> message and they don’t even need to be pressed at the same time (in the case
> of dead keys).  Whereas I believe there is a one-to-one between WM_KEYDOWN
> and key presses…
>
>
>
> Thanks
>
> -Brad
>
>
>
> *From:* osg-users-boun...@lists.openscenegraph.org [mailto:
> osg-users-boun...@lists.openscenegraph.org] *On Behalf Of *Trajce (Nick)
> Nikolov
> *Sent:* Friday, September 17, 2010 10:57 AM
>
> *To:* osg-users@lists.openscenegraph.org
> *Subject:* Re: [osg-users] Keypress broken since rev 11749
>
>
>
> Hi Robert,
>
>
>
> I find some time to dig into this. And here are my observations ( I am
> working with Vivien's submission, with osgviewerMFC )
>
>
>
> I put break points in GraphicsWindowWin32.cpp:
>
> Line: 2476
>
>         case WM_KEYDOWN    :
>
>         case WM_SYSKEYDOWN :
>
>         ////////////////////
>
>
>
>             {
>
>                 int keySymbol = 0;
>
>
>
> Line: 2451
>
>          /////////////////
>
>         case WM_CHAR :
>
>         /////////////////
>
>             {
>
>                 // if event was not handled by WM_KEYDOWN then we take care
> of it here
>
>                 // this method gives directly the utf16 char back so just
> need to add it as it is
>
>                 if(!_keypresshandled)
>
>                 {
>
>                     // first check if key is already registered on the map
>
>
>
>
>
> case WM_KEYDOWN/WM_SYSKEYDOWN : get its chance to handle every single key
> you press, even a dead key. So, for my czech character 'č', I have to press:
> SHIFT, '+', and 'c', in this order, and for each of these three I get
> WM_KEYDOWN. The only difference is that when I complete this sequence, on
> top of all WM_KEYDOWNs, it gets to case WM_CHAR: with my 'č'. This is how
> the system is managing these events. To reflect this behavior into OSG, only
> one single line needs to be added, I think, and that will fix Brad's issue
> as well:
>
>
>
> else
>
>                 {
>
>                     // was no special key, let WM_CHAR handle it
>
>                     _keypresshandled = false;
>
>                     _lastkeysymbol = keySymbol;
>
>                             /* the new line
> */ getEventQueue()->keyPress(keySymbol, eventTime);
>
>                 }
>
>
>
> This was the key that was waste (being 'eaten' :) ..).
>
>
>
> So to me it sounds that, with Vivien's submission, only the dead key +
> 'something' was not firing an event in osg - for the rest it should work as
> before, not  as Brad states above that the key events stopped work. I am
> very curious what he was actually doing.
>
>
>
> Cheers,
>
> -Nick
>
>  On Fri, Sep 17, 2010 at 8:04 PM, Vivien Delage <vdel...@gmail.com> wrote:
>
> Hi guys,
>
> I understand you Robert. I have no problem with reverting the code for now
> if this causes issues for other people. I will go and experiment a bit more
> on how to fix the dead key problem. Maybe I can find a solution which is not
> using the WM_CHAR message. I will let you know how it goes on my side.
>
>
> Cheers,
>
> Vivien
>
> ------------------
> Read this topic online here:
>
> http://forum.openscenegraph.org/viewtopic.php?p=31778#31778
>
>
>
>
>
>
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
>
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to