Ignore:
Timestamp:
Feb 13, 2003, 11:12:27 AM (23 years ago)
Author:
sandervl
Message:

Handle SetFocus(0) correctly: keystrokes are converted into WM_SYSKEYDOWN/(WM_SYSCHAR)/WM_SYSKEYUP messages

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/oslibmsgtranslate.cpp

    r9765 r9791  
    1 /* $Id: oslibmsgtranslate.cpp,v 1.99 2003-02-06 20:28:38 sandervl Exp $ */
     1/* $Id: oslibmsgtranslate.cpp,v 1.100 2003-02-13 10:12:25 sandervl Exp $ */
    22/*
    33 * Window message translation functions for OS/2
     
    3838#include <winkeyboard.h>
    3939#include "hook.h"
     40#include "user32api.h"
    4041
    4142#define DBG_LOCALLOG    DBG_oslibmsgtranslate
     
    662663            // adjust our WM_CHAR code
    663664            extramsg.lParam = 0x01460001;
    664             extramsg.message = WINWM_CHAR;
     665
     666            //After SetFocus(0), all keystrokes are converted in WM_SYS*
     667            extramsg.message = (fIgnoreKeystrokes) ? WINWM_SYSCHAR : WINWM_CHAR;
     668
    665669            setThreadQueueExtraCharMessage(teb, &extramsg);
    666670            // and finally adjust our WM_KEYDOWN code
     
    712716                    memcpy(&extramsg, winMsg, sizeof(MSG));
    713717   
    714                     extramsg.message = WINWM_CHAR;
     718                    //After SetFocus(0), all keystrokes are converted in WM_SYS*
     719                    extramsg.message = (fIgnoreKeystrokes) ? WINWM_SYSCHAR : WINWM_CHAR;
    715720
    716721                    // insert message into the queue
     
    729734                    memcpy(&extramsg, winMsg, sizeof(MSG));
    730735   
    731                     extramsg.message = WINWM_CHAR;
     736                    //After SetFocus(0), all keystrokes are converted in WM_SYS*
     737                    extramsg.message = (fIgnoreKeystrokes) ? WINWM_SYSCHAR : WINWM_CHAR;
    732738
    733739                    // insert message into the queue
     
    766772            winMsg->lParam |= WIN_KEY_ALTHELD;
    767773          }
     774        }
     775        //After SetFocus(0), all keystrokes are converted in WM_SYS*
     776        if(fIgnoreKeystrokes) {
     777            if(winMsg->message == WINWM_KEYDOWN) {
     778                winMsg->message = WINWM_SYSKEYDOWN;
     779            }
     780            else
     781            if(winMsg->message == WINWM_KEYUP) {
     782                winMsg->message = WINWM_SYSKEYUP;
     783            }
    768784        }
    769785        break;
     
    9921008
    9931009
    994       if(msg->message >= WINWM_SYSKEYDOWN)
     1010      //After SetFocus(0), all keystrokes are converted in WM_SYS*
     1011      if(msg->message >= WINWM_SYSKEYDOWN || fIgnoreKeystrokes)
    9951012        extramsg.message = WINWM_SYSCHAR;
    9961013      else   
Note: See TracChangeset for help on using the changeset viewer.