/*** wintrans.c - To translate windows message names * * Copyright 1988, Microsoft Corporation * * Purpose: To implement user-interface functions specific to windows: * * Revision History: * *************************************************************************/ #if defined (WIN) || defined (OS2) #if defined ( WIN ) #else #define INCL_WIN #endif #if defined(WIN) /* DDE window messages */ #define WM_DDE_FIRST 0x03E0 #define WM_DDE_INITIATE (WM_DDE_FIRST) #define WM_DDE_TERMINATE (WM_DDE_FIRST+1) #define WM_DDE_ADVISE (WM_DDE_FIRST+2) #define WM_DDE_UNADVISE (WM_DDE_FIRST+3) #define WM_DDE_ACK (WM_DDE_FIRST+4) #define WM_DDE_DATA (WM_DDE_FIRST+5) #define WM_DDE_REQUEST (WM_DDE_FIRST+6) #define WM_DDE_POKE (WM_DDE_FIRST+7) #define WM_DDE_EXECUTE (WM_DDE_FIRST+8) #define WM_DDE_LAST (WM_DDE_FIRST+8) /* Other Windows 3.0 message not in windows.h */ #define WM_COMPAREITEM 0x0039 #define WM_VKEYTOITEM 0x002E #define WM_CHARTOITEM 0x002F #define WM_DROPOBJECT 0x022A #define WM_QUERYDROPOBJECT 0x022B #define WM_BEGINDRAG 0x022C #define WM_DRAGLOOP 0x022D #define WM_DRAGSELECT 0x022E #define WM_DRAGMOVE 0x022F #define WM_COMMNOTIFY 0x0044 #define WM_COALESCE_FIRST 0x0390 #define WM_COALESCE_LAST 0x039F #define BOOL BOOL /* * This is the structure of an entry in a table of message names, numbers * and classes. It is the same structure as SPY uses. */ typedef struct { char *pchText; /* Message Text */ WORD wMsg; /* Message Number */ WORD wMask; /* Message Class */ } MSGINFO; /* * This is a table of message names, numbers * and classes. It is the same structure as SPY uses. */ static MSGINFO arMsgInfo[] = { "WM_NULL" ,WM_NULL , msgMaskOther ,"WM_CREATE" ,WM_CREATE , msgMaskWin ,"WM_DESTROY" ,WM_DESTROY , msgMaskWin ,"WM_MOVE" ,WM_MOVE , msgMaskWin ,"WM_SIZE" ,WM_SIZE , msgMaskWin ,"WM_ACTIVATE" ,WM_ACTIVATE , msgMaskWin ,"WM_SETFOCUS" ,WM_SETFOCUS , msgMaskWin ,"WM_KILLFOCUS" ,WM_KILLFOCUS , msgMaskWin ,"WM_ENABLE" ,WM_ENABLE , msgMaskWin ,"WM_SETREDRAW" ,WM_SETREDRAW , msgMaskWin ,"WM_SETTEXT" ,WM_SETTEXT , msgMaskWin ,"WM_GETTEXT" ,WM_GETTEXT , msgMaskWin ,"WM_GETTEXTLENGTH" ,WM_GETTEXTLENGTH , msgMaskWin ,"WM_SETFONT" ,WM_SETFONT , msgMaskWin ,"WM_GETFONT" ,WM_GETFONT , msgMaskWin ,"WM_PAINT" ,WM_PAINT , msgMaskWin ,"WM_CLOSE" ,WM_CLOSE , msgMaskWin ,"WM_QUERYENDSESSION" ,WM_QUERYENDSESSION , msgMaskWin ,"WM_QUIT" ,WM_QUIT , msgMaskWin ,"WM_QUERYOPEN" ,WM_QUERYOPEN , msgMaskWin ,"WM_ERASEBKGND" ,WM_ERASEBKGND , msgMaskWin ,"WM_SYSCOLORCHANGE" ,WM_SYSCOLORCHANGE , msgMaskSys ,"WM_ENDSESSION" ,WM_ENDSESSION , msgMaskSys ,"WM_SHOWWINDOW" ,WM_SHOWWINDOW , msgMaskWin ,"WM_CTLCOLOR" ,WM_CTLCOLOR , msgMaskWin ,"WM_WININICHANGE" ,WM_WININICHANGE , msgMaskSys ,"WM_DEVMODECHANGE" ,WM_DEVMODECHANGE , msgMaskSys ,"WM_ACTIVATEAPP" ,WM_ACTIVATEAPP , msgMaskWin ,"WM_FONTCHANGE" ,WM_FONTCHANGE , msgMaskSys ,"WM_TIMECHANGE" ,WM_TIMECHANGE , msgMaskSys ,"WM_COMPACTING" ,WM_COMPACTING , msgMaskSys ,"WM_COMMNOTIFY" ,WM_COMMNOTIFY , msgMaskSys | msgMaskInput ,"WM_CANCELMODE" ,WM_CANCELMODE , msgMaskWin ,"WM_SETCURSOR" ,WM_SETCURSOR , msgMaskMouse ,"WM_MOUSEACTIVATE" ,WM_MOUSEACTIVATE , msgMaskMouse ,"WM_CHILDACTIVATE" ,WM_CHILDACTIVATE , msgMaskWin ,"WM_QUEUESYNC" ,WM_QUEUESYNC , msgMaskSys ,"WM_GETMINMAXINFO" ,WM_GETMINMAXINFO , msgMaskWin ,"WM_PAINTICON" ,WM_PAINTICON , msgMaskWin ,"WM_ICONERASEBKGND" ,WM_ICONERASEBKGND , msgMaskWin ,"WM_NEXTDLGCTL" ,WM_NEXTDLGCTL , msgMaskWin ,"WM_DRAWITEM" ,WM_DRAWITEM , msgMaskWin ,"WM_MEASUREITEM" ,WM_MEASUREITEM , msgMaskWin ,"WM_DELETEITEM" ,WM_DELETEITEM , msgMaskWin ,"WM_COMPAREITEM" ,WM_COMPAREITEM , msgMaskWin ,"WM_NCCREATE" ,WM_NCCREATE , msgMaskNC ,"WM_NCDESTROY" ,WM_NCDESTROY , msgMaskNC ,"WM_NCCALCSIZE" ,WM_NCCALCSIZE , msgMaskNC ,"WM_NCHITTEST" ,WM_NCHITTEST , msgMaskNC | msgMaskMouse ,"WM_NCPAINT" ,WM_NCPAINT , msgMaskNC ,"WM_NCACTIVATE" ,WM_NCACTIVATE , msgMaskNC ,"WM_GETDLGCODE" ,WM_GETDLGCODE , msgMaskWin ,"WM_NCMOUSEMOVE" ,WM_NCMOUSEMOVE , msgMaskNC | msgMaskMouse ,"WM_NCLBUTTONDOWN" ,WM_NCLBUTTONDOWN , msgMaskNC | msgMaskMouse ,"WM_NCLBUTTONUP" ,WM_NCLBUTTONUP , msgMaskNC | msgMaskMouse ,"WM_NCLBUTTONDBLCLK" ,WM_NCLBUTTONDBLCLK , msgMaskNC | msgMaskMouse ,"WM_NCRBUTTONDOWN" ,WM_NCRBUTTONDOWN , msgMaskNC | msgMaskMouse ,"WM_NCRBUTTONUP" ,WM_NCRBUTTONUP , msgMaskNC | msgMaskMouse ,"WM_NCRBUTTONDBLCLK" ,WM_NCRBUTTONDBLCLK , msgMaskNC | msgMaskMouse ,"WM_NCMBUTTONDOWN" ,WM_NCMBUTTONDOWN , msgMaskNC | msgMaskMouse ,"WM_NCMBUTTONUP" ,WM_NCMBUTTONUP , msgMaskNC | msgMaskMouse ,"WM_NCMBUTTONDBLCLK" ,WM_NCMBUTTONDBLCLK , msgMaskNC | msgMaskMouse ,"WM_KEYDOWN" ,WM_KEYDOWN , msgMaskInput ,"WM_KEYUP" ,WM_KEYUP , msgMaskInput ,"WM_CHAR" ,WM_CHAR , msgMaskInput ,"WM_DEADCHAR" ,WM_DEADCHAR , msgMaskInput ,"WM_SYSKEYDOWN" ,WM_SYSKEYDOWN , msgMaskSys | msgMaskInput ,"WM_SYSKEYUP" ,WM_SYSKEYUP , msgMaskSys | msgMaskInput ,"WM_SYSCHAR" ,WM_SYSCHAR , msgMaskSys | msgMaskInput ,"WM_SYSDEADCHAR" ,WM_SYSDEADCHAR , msgMaskSys | msgMaskInput ,"WM_INITDIALOG" ,WM_INITDIALOG , msgMaskInit ,"WM_COMMAND" ,WM_COMMAND , msgMaskInput ,"WM_SYSCOMMAND" ,WM_SYSCOMMAND , msgMaskSys ,"WM_TIMER" ,WM_TIMER , msgMaskInput ,"WM_HSCROLL" ,WM_HSCROLL , msgMaskInput ,"WM_VSCROLL" ,WM_VSCROLL , msgMaskInput ,"WM_INITMENU" ,WM_INITMENU , msgMaskInit ,"WM_INITMENUPOPUP" ,WM_INITMENUPOPUP , msgMaskInit ,"WM_MENUSELECT" ,WM_MENUSELECT , msgMaskInput ,"WM_MENUCHAR" ,WM_MENUCHAR , msgMaskInput ,"WM_ENTERIDLE" ,WM_ENTERIDLE , msgMaskSys ,"WM_MOUSEMOVE" ,WM_MOUSEMOVE , msgMaskInput | msgMaskMouse ,"WM_LBUTTONDOWN" ,WM_LBUTTONDOWN , msgMaskInput | msgMaskMouse ,"WM_LBUTTONUP" ,WM_LBUTTONUP , msgMaskInput | msgMaskMouse ,"WM_LBUTTONDBLCLK" ,WM_LBUTTONDBLCLK , msgMaskInput | msgMaskMouse ,"WM_RBUTTONDOWN" ,WM_RBUTTONDOWN , msgMaskInput | msgMaskMouse ,"WM_RBUTTONUP" ,WM_RBUTTONUP , msgMaskInput | msgMaskMouse ,"WM_RBUTTONDBLCLK" ,WM_RBUTTONDBLCLK , msgMaskInput | msgMaskMouse ,"WM_MBUTTONDOWN" ,WM_MBUTTONDOWN , msgMaskInput | msgMaskMouse ,"WM_MBUTTONUP" ,WM_MBUTTONUP , msgMaskInput | msgMaskMouse ,"WM_MBUTTONDBLCLK" ,WM_MBUTTONDBLCLK , msgMaskInput | msgMaskMouse ,"WM_PARENTNOTIFY" ,WM_PARENTNOTIFY , msgMaskInput | msgMaskMouse ,"WM_CUT" ,WM_CUT , msgMaskClip ,"WM_COPY" ,WM_COPY , msgMaskClip ,"WM_PASTE" ,WM_PASTE , msgMaskClip ,"WM_CLEAR" ,WM_CLEAR , msgMaskClip ,"WM_UNDO" ,WM_UNDO , msgMaskClip ,"WM_RENDERFORMAT" ,WM_RENDERFORMAT , msgMaskClip ,"WM_RENDERALLFORMATS" ,WM_RENDERALLFORMATS , msgMaskClip ,"WM_DESTROYCLIPBOARD" ,WM_DESTROYCLIPBOARD , msgMaskClip ,"WM_DRAWCLIPBOARD" ,WM_DRAWCLIPBOARD , msgMaskClip ,"WM_PAINTCLIPBOARD" ,WM_PAINTCLIPBOARD , msgMaskClip ,"WM_VSCROLLCLIPBOARD" ,WM_VSCROLLCLIPBOARD , msgMaskClip ,"WM_SIZECLIPBOARD" ,WM_SIZECLIPBOARD , msgMaskClip ,"WM_ASKCBFORMATNAME" ,WM_ASKCBFORMATNAME , msgMaskClip ,"WM_CHANGECBCHAIN" ,WM_CHANGECBCHAIN , msgMaskClip ,"WM_HSCROLLCLIPBOARD" ,WM_HSCROLLCLIPBOARD , msgMaskClip ,"WM_QUERYNEWPALETTE" ,WM_QUERYNEWPALETTE , msgMaskWin ,"WM_PALETTEISCHANGING",WM_PALETTEISCHANGING , msgMaskWin ,"WM_PALETTECHANGED" ,WM_PALETTECHANGED , msgMaskWin ,"WM_USER" ,WM_USER , msgMaskOther ,"WM_DDE_INITIATE" ,WM_DDE_INITIATE , msgMaskDDE ,"WM_DDE_TERMINATE" ,WM_DDE_TERMINATE , msgMaskDDE ,"WM_DDE_ADVISE" ,WM_DDE_ADVISE , msgMaskDDE ,"WM_DDE_UNADVISE" ,WM_DDE_UNADVISE , msgMaskDDE ,"WM_DDE_ACK" ,WM_DDE_ACK , msgMaskDDE ,"WM_DDE_DATA" ,WM_DDE_DATA , msgMaskDDE ,"WM_DDE_REQUEST" ,WM_DDE_REQUEST , msgMaskDDE ,"WM_DDE_POKE" ,WM_DDE_POKE , msgMaskDDE ,"WM_DDE_EXECUTE" ,WM_DDE_EXECUTE , msgMaskDDE ,"WM_MDICREATE" ,WM_MDICREATE , msgMaskWin ,"WM_MDIDESTROY" ,WM_MDIDESTROY , msgMaskWin ,"WM_MDIACTIVATE" ,WM_MDIACTIVATE , msgMaskWin ,"WM_MDIRESTORE" ,WM_MDIRESTORE , msgMaskWin ,"WM_MDINEXT" ,WM_MDINEXT , msgMaskWin ,"WM_MDIMAXIMIZE" ,WM_MDIMAXIMIZE , msgMaskWin ,"WM_MDITILE" ,WM_MDITILE , msgMaskWin ,"WM_MDICASCADE" ,WM_MDICASCADE , msgMaskWin ,"WM_SPOOLERSTATUS" ,WM_SPOOLERSTATUS , msgMaskOther ,"WM_VKEYTOITEM" ,WM_VKEYTOITEM , msgMaskWin ,"WM_CHARTOITEM" ,WM_CHARTOITEM , msgMaskWin ,"WM_SETFONT" ,WM_SETFONT , msgMaskWin ,"WM_GETFONT" ,WM_GETFONT , msgMaskWin ,"WM_QUERYDRAGICON" ,WM_QUERYDRAGICON , msgMaskWin ,"WM_MDIICONARRANGE" ,WM_MDIICONARRANGE , msgMaskWin ,"WM_MDIGETACTIVE" ,WM_MDIGETACTIVE , msgMaskWin ,"WM_COALESCE_FIRST" ,WM_COALESCE_FIRST , msgMaskSys ,"WM_COALESCE_2" ,WM_COALESCE_FIRST+1 , msgMaskSys ,"WM_COALESCE_3" ,WM_COALESCE_FIRST+2 , msgMaskSys ,"WM_COALESCE_4" ,WM_COALESCE_FIRST+3 , msgMaskSys ,"WM_COALESCE_5" ,WM_COALESCE_FIRST+4 , msgMaskSys ,"WM_COALESCE_6" ,WM_COALESCE_FIRST+5 , msgMaskSys ,"WM_COALESCE_7" ,WM_COALESCE_FIRST+6 , msgMaskSys ,"WM_COALESCE_8" ,WM_COALESCE_FIRST+7 , msgMaskSys ,"WM_COALESCE_9" ,WM_COALESCE_FIRST+8 , msgMaskSys ,"WM_COALESCE_10" ,WM_COALESCE_FIRST+9 , msgMaskSys ,"WM_COALESCE_11" ,WM_COALESCE_FIRST+10 , msgMaskSys ,"WM_COALESCE_12" ,WM_COALESCE_FIRST+11 , msgMaskSys ,"WM_COALESCE_13" ,WM_COALESCE_FIRST+12 , msgMaskSys ,"WM_COALESCE_14" ,WM_COALESCE_FIRST+13 , msgMaskSys ,"WM_COALESCE_15" ,WM_COALESCE_FIRST+14 , msgMaskSys ,"WM_COALESCE_LAST" ,WM_COALESCE_LAST , msgMaskSys #ifdef INTERNAL ,"WM_SIZEWAIT" ,WM_SIZEWAIT , msgMaskWin ,"WM_SETVISIBLE" ,WM_SETVISIBLE , msgMaskWin ,"WM_SYSTEMERROR" ,WM_SYSTEMERROR , msgMaskSys ,"WM_FILESYSCHANGE" ,WM_FILESYSCHANGE , msgMaskSys ,"WM_ALTTABACTIVE" ,WM_ALTTABACTIVE , msgMaskSys ,"WM_SYNCPAINT" ,WM_SYNCPAINT , msgMaskWin ,"WM_SYNCTASK" ,WM_SYNCTASK , msgMaskWin ,"WM_YOMICHAR" ,WM_YOMICHAR , msgMaskInput ,"WM_CONVERTREQUEST" ,WM_CONVERTREQUEST , msgMaskInput ,"WM_CONVERTRESULT" ,WM_CONVERTRESULT , msgMaskInput ,"WM_SYSTIMER" ,WM_SYSTIMER , msgMaskSys ,"WM_ENTERMENULOOP" ,WM_ENTERMENULOOP , msgMaskSys | msgMaskInput ,"WM_EXITMENULOOP" ,WM_EXITMENULOOP , msgMaskSys | msgMaskInput ,"WM_ENTERSIZEMOVE" ,WM_ENTERSIZEMOVE , msgMaskSys | msgMaskInput ,"WM_EXITSIZEMOVE" ,WM_EXITSIZEMOVE , msgMaskSys | msgMaskInput ,"WM_YOMICHAR" ,WM_YOMICHAR , msgMaskOther ,"WM_CONVERTREQUEST" ,WM_CONVERTREQUEST , msgMaskOther ,"WM_CONVERTRESULT" ,WM_CONVERTRESULT , msgMaskOther ,"WM_ISACTIVEICON" ,WM_ISACTIVEICON , msgMaskWin ,"WM_QUERYPARKICON" ,WM_QUERYPARKICON , msgMaskWin ,"WM_DROPOBJECT" ,WM_DROPOBJECT , msgMaskWin ,"WM_QUERYDROPOBJECT" ,WM_QUERYDROPOBJECT , msgMaskWin ,"WM_BEGINDRAG" ,WM_BEGINDRAG , msgMaskWin ,"WM_DRAGLOOP" ,WM_DRAGLOOP , msgMaskWin ,"WM_DRAGSELECT" ,WM_DRAGSELECT , msgMaskWin ,"WM_DRAGMOVE" ,WM_DRAGMOVE , msgMaskWin ,"WM_TESTING" ,WM_TESTING , msgMaskSys #endif ,NULL,0,0 }; #elif defined(OS2) /* * Define Message output information */ #define MSGI_ENABLED 0x0001 #define MSGI_MOUSE 0x0002 /* Mouse type messages */ #define MSGI_KEY 0x0004 /* Key type messages */ #define MSGI_FREQ 0x0010 /* Frequent messages generaly ignored */ #define MPT_NORMAL 0x00 #define MPT_SWP 0x01 #define MPT_RECTL 0x02 #define MPT_WNDPRMS 0x03 #define MPT_QMSG 0x04 #define MP_ENABLED 0x80 #define MP_MASK 0x07 #define MPTS(mp1,mp2) ((UCHAR)mp2 << 3 | (UCHAR)mp1) typedef struct { USHORT wMsg; char *pchText; USHORT wOptions; UCHAR bMPTypes; SHORT iListBox; } MSGINFO; static MSGINFO arMsgInfo[] = { // WM_NULL not currently support by CV {0x0001, "WM_CREATE", MSGI_ENABLED, 0, 0}, {0x0002, "WM_DESTROY", MSGI_ENABLED, 0, 0}, {0x0004, "WM_ENABLE", MSGI_ENABLED, 0, 0}, {0x0005, "WM_SHOW", MSGI_ENABLED, 0, 0}, {0x0006, "WM_MOVE", MSGI_ENABLED, 0, 0}, {0x0007, "WM_SIZE", MSGI_ENABLED, 0, 0}, {0x0008, "WM_ADJUSTWINDOWPOS", MSGI_ENABLED, MPTS(MPT_SWP, 0), 0}, {0x0009, "WM_CALCVALIDRECTS", MSGI_ENABLED, MPTS(MPT_RECTL, MPT_SWP), 0}, {0x000a, "WM_SETWINDOWPARAMS", MSGI_ENABLED, MPTS(MPT_WNDPRMS, 0), 0}, {0x000b, "WM_QUERYWINDOWPARAMS", MSGI_ENABLED, 0, 0}, {0x000c, "WM_HITTEST", MSGI_FREQ, 0, 0}, {0x000d, "WM_ACTIVATE", MSGI_ENABLED, 0, 0}, {0x000f, "WM_SETFOCUS", MSGI_ENABLED, 0, 0}, {0x0010, "WM_SETSELECTION", MSGI_ENABLED, 0, 0}, {0x0020, "WM_COMMAND", MSGI_ENABLED, 0, 0}, {0x0021, "WM_SYSCOMMAND", MSGI_ENABLED, 0, 0}, {0x0022, "WM_HELP", MSGI_ENABLED, 0, 0}, {0x0023, "WM_PAINT", MSGI_ENABLED, 0, 0}, {0x0024, "WM_TIMER", MSGI_FREQ, 0, 0}, {0x0025, "WM_SEM1", MSGI_ENABLED, 0, 0}, {0x0026, "WM_SEM2", MSGI_ENABLED, 0, 0}, {0x0027, "WM_SEM3", MSGI_ENABLED, 0, 0}, {0x0028, "WM_SEM4", MSGI_ENABLED, 0, 0}, {0x0029, "WM_CLOSE", MSGI_ENABLED, 0, 0}, {0x002a, "WM_QUIT", MSGI_ENABLED, 0, 0}, {0x002b, "WM_SYSCOLORCHANGE", MSGI_ENABLED, 0, 0}, {0x002d, "WM_SYSVALUECHANGED", MSGI_ENABLED, 0, 0}, {0x0030, "WM_CONTROL", MSGI_ENABLED, 0, 0}, {0x0031, "WM_VSCROLL", MSGI_ENABLED, 0, 0}, {0x0032, "WM_HSCROLL", MSGI_ENABLED, 0, 0}, {0x0033, "WM_INITMENU", MSGI_ENABLED, 0, 0}, {0x0034, "WM_MENUSELECT", MSGI_ENABLED, 0, 0}, {0x0035, "WM_MENUEND", MSGI_ENABLED, 0, 0}, {0x0036, "WM_DRAWITEM", MSGI_ENABLED, 0, 0}, {0x0037, "WM_MEASUREITEM", MSGI_ENABLED, 0, 0}, {0x0038, "WM_CONTROLPOINTER", MSGI_FREQ, 0, 0}, {0x0039, "WM_CONTROLHEAP", MSGI_ENABLED, 0, 0}, {0x003a, "WM_QUERYDLGCODE", MSGI_ENABLED, 0, 0}, {0x003b, "WM_INITDLG", MSGI_ENABLED, 0, 0}, {0x003c, "WM_SUBSTITUTESTRING", MSGI_ENABLED, 0, 0}, {0x003d, "WM_MATCHMNEMONIC", MSGI_ENABLED, 0, 0}, {0x0040, "WM_FLASHWINDOW", MSGI_ENABLED, 0, 0}, {0x0041, "WM_FORMATFRAME", MSGI_ENABLED, 0, 0}, {0x0042, "WM_UPDATEFRAME", MSGI_ENABLED, 0, 0}, {0x0043, "WM_FOCUSCHANGE", MSGI_ENABLED, 0, 0}, {0x0044, "WM_SETBORDERSIZE", MSGI_ENABLED, 0, 0}, {0x0045, "WM_TRACKFRAME", MSGI_ENABLED, 0, 0}, {0x0046, "WM_MINMAXFRAME", MSGI_ENABLED, MPTS(MPT_SWP, 0), 0}, {0x0047, "WM_SETICON", MSGI_ENABLED, 0, 0}, {0x0048, "WM_QUERYICON", MSGI_ENABLED, 0, 0}, {0x0049, "WM_SETACCELTABLE", MSGI_ENABLED, 0, 0}, {0x004a, "WM_QUERYACCELTABLE", MSGI_ENABLED, 0, 0}, {0x004b, "WM_TRANSLATEACCEL", MSGI_ENABLED, MPTS(MPT_QMSG, 0), 0}, {0x004c, "WM_QUERYTRACKINFO", MSGI_ENABLED, 0, 0}, {0x004d, "WM_QUERYBORDERSIZE", MSGI_ENABLED, 0, 0}, {0x004e, "WM_NEXTMENU", MSGI_ENABLED, 0, 0}, {0x004f, "WM_ERASEBACKGROUND", MSGI_ENABLED, MPTS(MPT_RECTL, 0), 0}, {0x0050, "WM_QUERYFRAMEINFO", MSGI_ENABLED, 0, 0}, {0x0051, "WM_QUERYFOCUSCHAIN", MSGI_ENABLED, MPTS(MPT_SWP, 0), 0}, {0x0053, "WM_CALCFRAMERECT", MSGI_ENABLED, MPTS(MPT_RECTL, 0), 0}, {0x0059, "WM_QUERYFRAMECTLCOUNT", MSGI_ENABLED, 0, 0}, {0x0060, "WM_RENDERFMT", MSGI_ENABLED, 0, 0}, {0x0061, "WM_RENDERALLFMTS", MSGI_ENABLED, 0, 0}, {0x0062, "WM_DESTROYCLIPBOARD", MSGI_ENABLED, 0, 0}, {0x0063, "WM_PAINTCLIPBOARD", MSGI_ENABLED, 0, 0}, {0x0064, "WM_SIZECLIPBOARD", MSGI_ENABLED, 0, 0}, {0x0065, "WM_HSCROLLCLIPBOARD", MSGI_ENABLED, 0, 0}, {0x0066, "WM_VSCROLLCLIPBOARD", MSGI_ENABLED, 0, 0}, {0x0067, "WM_DRAWCLIPBOARD", MSGI_ENABLED, 0, 0}, {0x0070, "WM_MOUSEMOVE", MSGI_FREQ| MSGI_MOUSE, 0, 0}, {0x0071, "WM_BUTTON1DOWN", MSGI_ENABLED| MSGI_MOUSE, 0, 0}, {0x0072, "WM_BUTTON1UP", MSGI_ENABLED| MSGI_MOUSE, 0, 0}, {0x0073, "WM_BUTTON1DBLCLK", MSGI_ENABLED| MSGI_MOUSE, 0, 0}, {0x0074, "WM_BUTTON2DOWN", MSGI_ENABLED| MSGI_MOUSE, 0, 0}, {0x0075, "WM_BUTTON2UP", MSGI_ENABLED| MSGI_MOUSE, 0, 0}, {0x0076, "WM_BUTTON2DBLCLK", MSGI_ENABLED| MSGI_MOUSE, 0, 0}, {0x0077, "WM_BUTTON3DOWN", MSGI_ENABLED| MSGI_MOUSE, 0, 0}, {0x0078, "WM_BUTTON3UP", MSGI_ENABLED| MSGI_MOUSE, 0, 0}, {0x0079, "WM_BUTTON3DBLCLK", MSGI_ENABLED| MSGI_MOUSE, 0, 0}, {0x007a, "WM_CHAR", MSGI_ENABLED | MSGI_KEY, 0, 0}, {0x00A0, "WM_DDE_INITIATE", MSGI_ENABLED, 0, 0}, {0x00A1, "WM_DDE_REQUEST", MSGI_ENABLED, 0, 0}, {0x00A2, "WM_DDE_ACK", MSGI_ENABLED, 0, 0}, {0x00A3, "WM_DDE_DATA", MSGI_ENABLED, 0, 0}, {0x00A4, "WM_DDE_ADVISE", MSGI_ENABLED, 0, 0}, {0x00A5, "WM_DDE_UNADVISE", MSGI_ENABLED, 0, 0}, {0x00A6, "WM_DDE_POKE", MSGI_ENABLED, 0, 0}, {0x00A7, "WM_DDE_EXECUTE", MSGI_ENABLED, 0, 0}, {0x00A8, "WM_DDE_TERMINATE", MSGI_ENABLED, 0, 0}, {0x00A9, "WM_DDE_INITIATEACK", MSGI_ENABLED, 0, 0}, {0x00af, "WM_DDE_LAST", MSGI_ENABLED, 0, 0}, {0x00b0, "WM_QUERYCONVERTPOS", MSGI_ENABLED, 0, 0}, {0x0120, "BM_CLICK", MSGI_ENABLED, 0, 0}, {0x0121, "BM_QUERYCHECKINDEX", MSGI_ENABLED, 0, 0}, {0x0122, "BM_QUERYHILITE", MSGI_ENABLED, 0, 0}, {0x0123, "BM_SETHILITE", MSGI_ENABLED, 0, 0}, {0x0124, "BM_QUERYCHECK", MSGI_ENABLED, 0, 0}, {0x0125, "BM_SETCHECK", MSGI_ENABLED, 0, 0}, {0x0126, "BM_SETDEFAULT", MSGI_ENABLED, 0, 0}, {0x0140, "EM_QUERYCHANGED", MSGI_ENABLED, 0, 0}, {0x0141, "EM_QUERYSEL", MSGI_ENABLED, 0, 0}, {0x0142, "EM_SETSEL", MSGI_ENABLED, 0, 0}, {0x0143, "EM_SETTEXTLIMIT", MSGI_ENABLED, 0, 0}, {0x0144, "EM_CUT", MSGI_ENABLED, 0, 0}, {0x0145, "EM_COPY", MSGI_ENABLED, 0, 0}, {0x0146, "EM_CLEAR", MSGI_ENABLED, 0, 0}, {0x0147, "EM_PASTE", MSGI_ENABLED, 0, 0}, {0x0148, "EM_QUERYFIRSTCHAR", MSGI_ENABLED, 0, 0}, {0x0149, "EM_SETFIRSTCHAR", MSGI_ENABLED, 0, 0}, {0x0160, "LM_QUERYITEMCOUNT", MSGI_ENABLED, 0, 0}, {0x0161, "LM_INSERTITEM", MSGI_ENABLED, 0, 0}, {0x0162, "LM_SETTOPINDEX", MSGI_ENABLED, 0, 0}, {0x0163, "LM_DELETEITEM", MSGI_ENABLED, 0, 0}, {0x0164, "LM_SELECTITEM", MSGI_ENABLED, 0, 0}, {0x0165, "LM_QUERYSELECTION", MSGI_ENABLED, 0, 0}, {0x0166, "LM_SETITEMTEXT", MSGI_ENABLED, 0, 0}, {0x0167, "LM_QUERYITEMTEXTLENGTH", MSGI_ENABLED, 0, 0}, {0x0168, "LM_QUERYITEMTEXT", MSGI_ENABLED, 0, 0}, {0x0169, "LM_SETITEMHANDLE", MSGI_ENABLED, 0, 0}, {0x016a, "LM_QUERYITEMHANDLE", MSGI_ENABLED, 0, 0}, {0x016b, "LM_SEARCHSTRING", MSGI_ENABLED, 0, 0}, {0x016c, "LM_SETITEMHEIGHT", MSGI_ENABLED, 0, 0}, {0x016d, "LM_QUERYTOPINDEX", MSGI_ENABLED, 0, 0}, {0x016e, "LM_DELETEALL", MSGI_ENABLED, 0, 0}, {0x0180, "MM_INSERTITEM", MSGI_ENABLED, 0, 0}, {0x0181, "MM_DELETEITEM", MSGI_ENABLED, 0, 0}, {0x0182, "MM_QUERYITEM", MSGI_ENABLED, 0, 0}, {0x0183, "MM_SETITEM", MSGI_ENABLED, 0, 0}, {0x0184, "MM_QUERYITEMCOUNT", MSGI_ENABLED, 0, 0}, {0x0185, "MM_STARTMENUMODE", MSGI_ENABLED, 0, 0}, {0x0186, "MM_ENDMENUMODE", MSGI_ENABLED, 0, 0}, {0x0187, "MM_DISMISSMENU", MSGI_ENABLED, 0, 0}, {0x0188, "MM_REMOVEITEM", MSGI_ENABLED, 0, 0}, {0x0189, "MM_SELECTITEM", MSGI_ENABLED, 0, 0}, {0x018a, "MM_QUERYSELITEMID", MSGI_ENABLED, 0, 0}, {0x018b, "MM_QUERYITEMTEXT", MSGI_ENABLED, 0, 0}, {0x018c, "MM_QUERYITEMTEXTLENGTH", MSGI_ENABLED, 0, 0}, {0x018d, "MM_SETITEMHANDLE", MSGI_ENABLED, 0, 0}, {0x018e, "MM_SETITEMTEXT", MSGI_ENABLED, 0, 0}, {0x018f, "MM_ITEMPOSITIONFROMID", MSGI_ENABLED, 0, 0}, {0x0190, "MM_ITEMIDFROMPOSITION", MSGI_ENABLED, 0, 0}, {0x0191, "MM_QUERYITEMATTR", MSGI_ENABLED, 0, 0}, {0x0192, "MM_SETITEMATTR", MSGI_ENABLED, 0, 0}, {0x0193, "MM_ISITEMVALID", MSGI_ENABLED, 0, 0}, {0x01a0, "SBM_SETSCROLLBAR", MSGI_ENABLED, 0, 0}, {0x01a1, "SBM_SETPOS", MSGI_ENABLED, 0, 0}, {0x01a2, "SBM_QUERYPOS", MSGI_ENABLED, 0, 0}, {0x01a3, "SBM_QUERYRANGE", MSGI_ENABLED, 0, 0}, {0x01a4, "SBM_SETHILITE", MSGI_ENABLED, 0, 0}, {0x01a5, "SBM_QUERYHILITE", MSGI_ENABLED, 0, 0}, {0x01e3, "TBM_SETHILITE", MSGI_ENABLED, 0, 0}, {0x01e4, "TBM_QUERYHILITE", MSGI_ENABLED, 0, 0}, {0x0000, NULL, 0, 0, 0} }; #endif /*********************************************************************** * * WMSGFarStringCompare * * * Purpose: Determine if two far strings are equal * * Input: lpchTo - Pointer to one of the strings * lpchFrom - Pointer to the other string * * Returns TRUE if the strings match * * Exceptions: None * * ************************************************************************ */ int WMSGFarStringCompare(char far *lpchTo, char far *lpchFrom) { do { if(*lpchTo++ != *lpchFrom) { if((!lpchTo[-1] || (lpchTo[-1] == ';')) && (!*lpchFrom || (*lpchFrom == ';'))) return(TRUE); return(FALSE); } } while(*lpchFrom++); return(TRUE); } /*********************************************************************** * * WMSGFarStringCopy * * * Purpose: Copies a far string to a far buffer * * Input: lpchTo - Pointer to the buffer * lpchFrom - Pointer to the string * * Returns The number of characters copied (excluding the terminator) * * Exceptions: None * * ************************************************************************ */ int WMSGFarStringCopy(char far *lpchTo, char far *lpchFrom) { int wResult; for(wResult = 0;*lpchTo++ = *lpchFrom++;wResult++); return(wResult); } /*********************************************************************** * * WMSGTranslate * * * Purpose: Translate from text to messages and classes, or from a message * number to class and text. * * Input: lpwMsg - Used to specify or return a message number * lpwType - Used to return msgTypeClass or msgTypeType. If lpwType is * NULL the callis to translate FROM a message type number * szMessage- A buffer for the message name * lpWmask - Used to return the class of the message * * Returns TRUE if the message was found * * Exceptions: The message name is filled in as User_Message of no find * * ************************************************************************ */ WORD WMSGTranslate( LPW lpwMsg, LPW lpwType, LSZ szMsg, LPW lpwMask) { int fContinue; int static fInit = FALSE; int static cMsg; int iMsgLast,iMsgFirst,iMsgCur; MSGINFO *pMSGINFO = arMsgInfo,Temp; if(!fInit) { fInit = TRUE; /* * Bubble sort the table This is probably not needed */ do { fContinue = FALSE; for( pMSGINFO = arMsgInfo; (++pMSGINFO)->pchText; ) { if(pMSGINFO->wMsg < pMSGINFO[-1].wMsg) { Temp = pMSGINFO[-1]; pMSGINFO[-1] = *pMSGINFO; *pMSGINFO = Temp; fContinue = TRUE; } } cMsg = pMSGINFO - arMsgInfo; pMSGINFO = arMsgInfo; } while(fContinue); } if(lpwType) { /* * We are being asked to translate user text into a message type number * or a union of message classes. * First look for a message name match */ for(;pMSGINFO->pchText; pMSGINFO++) { if(WMSGFarStringCompare(szMsg,(char far *)(pMSGINFO->pchText))) { /* * Message type name found */ *lpwType = msgTypeType; *lpwMsg = pMSGINFO->wMsg; return(TRUE); } } /* * No specific message type found. Translate into a union of classes */ *lpwType = msgTypeClass; *lpwMsg = 0; do { switch(*szMsg++) { case 'm': *lpwMsg |= msgMaskMouse; break; case 'w': *lpwMsg |= msgMaskWin; break; case 'n': *lpwMsg |= msgMaskInput; break; case 's': *lpwMsg |= msgMaskSys; break; case 'i': *lpwMsg |= msgMaskInit; break; case 'c': *lpwMsg |= msgMaskClip; break; case 'd': *lpwMsg |= msgMaskDDE; break; case 'z': *lpwMsg |= msgMaskNC; break; case 'M': *lpwMsg |= msgMaskMouse; break; case 'W': *lpwMsg |= msgMaskWin; break; case 'N': *lpwMsg |= msgMaskInput; break; case 'S': *lpwMsg |= msgMaskSys; break; case 'I': *lpwMsg |= msgMaskInit; break; case 'C': *lpwMsg |= msgMaskClip; break; case 'D': *lpwMsg |= msgMaskDDE; break; case 'Z': *lpwMsg |= msgMaskNC; break; case ' ': case '\0': case ';': return(TRUE); default: return(FALSE); } } while(TRUE); } else { /* * We are being asked to look up a message type number. * Do a binary search. */ iMsgFirst = 0; iMsgLast = cMsg; while(iMsgFirst < iMsgLast) { iMsgCur = (iMsgFirst + iMsgLast) >> 1; if(*lpwMsg < arMsgInfo[iMsgCur].wMsg) { iMsgLast = iMsgCur; } else if(*lpwMsg > arMsgInfo[iMsgCur].wMsg) { iMsgFirst = iMsgCur + 1; } else { /* * We found the message. Set up return buffers. */ #if defined(WIN) if(lpwMask) *lpwMask = arMsgInfo[iMsgCur].wMask; #endif if(szMsg) WMSGFarStringCopy(szMsg,(char far *)arMsgInfo[iMsgCur].pchText); return(TRUE); } } } /* * Message not recognized - return a default value */ if(szMsg) WMSGFarStringCopy(szMsg,"User_Message"); if(lpwMask) *lpwMask = 0; return(FALSE); } #endif // defined (WIN) || defined (OS2)