if (!::WinRegisterClass( vHab
,wxFrameClassName
,(PFNWP)wxWndProc
- ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT
+ ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT | CS_FRAME
,sizeof(ULONG)
))
{
#if wxUSE_THREADS
wxMutexGuiLeaveOrEnter();
#endif // wxUSE_THREADS
- while (!Pending() && ProcessIdle())
- {
-// wxUsleep(10000);
- }
- DoMessage();
+ while (!Pending() && ProcessIdle())
+ {
+// wxUsleep(10000);
+ }
+ DoMessage();
}
return (int)svCurrentMsg.mp1;
} // end of wxApp::MainLoop
//
// Try translations first; find the youngest window with
- // a translation table.
+ // a translation table. OS/2 has case sensative accels, so
+ // this block, coded by BK, removes that and helps make them
+ // case insensative.
//
-#if 0
- for (pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent() )
+ if(pMsg->msg == WM_CHAR)
{
- if (pMsg->msg == WM_CHAR)
- if (pWnd->OS2TranslateMessage(pWxmsg))
- return TRUE;
+ PBYTE pChmsg = (PBYTE)&(pMsg->msg);
+ USHORT uSch = CHARMSG(pChmsg)->chr;
+ bool bRc;
+
+ //
+ // Do not process keyup events
+ //
+ if(!(CHARMSG(pChmsg)->fs & KC_KEYUP))
+ {
+ if((CHARMSG(pChmsg)->fs & (KC_ALT | KC_CTRL)) && CHARMSG(pChmsg)->chr != 0)
+ CHARMSG(pChmsg)->chr = (USHORT)wxToupper((UCHAR)uSch);
+
+ for(pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent() )
+ {
+ if((bRc = pWnd->OS2TranslateMessage(pWxmsg)) == TRUE)
+ break;
+ }
+ if(!bRc) // untranslated, should restore original value
+ CHARMSG(pChmsg)->chr = uSch;
+ }
}
-#endif
//
// Anyone for a non-translation message? Try youngest descendants first.
//
- for (pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent())
- {
- if (pWnd->OS2ProcessMessage(pWxmsg))
- return TRUE;
- }
+// for (pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent())
+// {
+// if (pWnd->OS2ProcessMessage(pWxmsg))
+// return TRUE;
+// }
return FALSE;
} // end of wxApp::ProcessMessage