Hi Brad, VS 8.0. Is that 2005?
-Nick On Mon, Sep 20, 2010 at 11:52 PM, Brad Huber <[email protected]> wrote: > Nick, > > > > Thanks for the extra input. I’m using VC80. I’ve previously hooked up > Spy++ and noticed that my window does not receive either WM_CHAR or > WM_GETDLGCODE. In addition I tried something like what you’ve mentioned and > it doesn’t ever get a WM_CHAR. It does get WM_KEYDOWN and others. Anyway > I’ve also come across several posts online saying the CDialog is different > wrt WM_CHAR. > > > > You’re example says differently and I haven’t tried a stripped down version > like that. I don’t want to belabor the point. The issue is essentially > fixed for me (regardless of which way we do translated / raw messages). > > > > I guess we’ll see which direction Robert would like to take it vis-à-vis > translated/untranslated, dead keys, etc. > > > > Thanks > > -Brad > > > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *Trajce (Nick) > Nikolov > *Sent:* Monday, September 20, 2010 12:15 PM > > *To:* OpenSceneGraph Users > *Subject:* Re: [osg-users] Keypress broken since rev 11749 > > > > Hi again Brad, > > > > http://msdn.microsoft.com/en-us/library/619z63f5(VS.80).aspx > > > > note the Note. This makes me think you are using older MFC that is not > doing that ..... > > > -Nick > > On Mon, Sep 20, 2010 at 9:37 PM, Trajce (Nick) Nikolov < > [email protected]> wrote: > > Hi Brad, > > > > I hate arguing :) ... For me it works. I put a break point on the Sleep and > I get there > > > > BOOL CDialogDlg::PreTranslateMessage( MSG *pMsg ) > > { > > if (pMsg->message == WM_CHAR ) > > { > > // will I get here > > Sleep(10); > > } > > return CDialog::PreTranslateMessage(pMsg); > > } > > -Nick > > > > On Mon, Sep 20, 2010 at 9:28 PM, Brad Huber <[email protected]> > wrote: > > Nick, > > > > According to my understanding and experience, > CDialog::PreTranslateMessage(MSG *msg) does not receive WM_CHAR messages so > I cannot do anything about that. In the MFC documentation there is a > CWnd::GetDlgCode method which tells the framework which key messages (like > WM_CHAR) your class would like to receive but again this does not work for > CDialog classes. GetDlgCode does not get called and PreTranslateMessage > does not ever get WM_CHAR. Therefore I cannot use any WM_CHAR based > mechanism with my existing CDialog based app. I can use a work around (ie > don’t rely on any WM_KEYDOWN) and use WM_KEYUP instead. I could also > investigate inserting a control on top of the dialog which would allow > receipt of WM_CHAR messages. Anyway there is apparently nothing I can do to > force WM_CHAR to work with CDialog. > > > > Thanks > > -Brad > > > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *Trajce (Nick) > Nikolov > *Sent:* Monday, September 20, 2010 11:06 AM > *To:* OpenSceneGraph Users > > > *Subject:* Re: [osg-users] Keypress broken since rev 11749 > > > > 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 <[email protected]> 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:* [email protected] [mailto: > [email protected]] *On Behalf Of *Trajce (Nick) > Nikolov > *Sent:* Friday, September 17, 2010 10:57 AM > > > *To:* [email protected] > *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 <[email protected]> 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 > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

