; --------------------------------------------------------------------------- ; ; OBSOLETE.INC ; ; Old message thunking macros, no longer used. ; ; --------------------------------------------------------------------------- ; ------------- ; FROM DISP.INC ; ------------- ;-----------------------------------------------------------------------; ; DefMsgTable ; ; list ; The list of table code-names to create table entries from. ; ; table_suffix ; The suffix which distinguishes this table name from others. ; ; table_size ; The size of entries in the tables that this table refers to. ; ; direction ; The direction of thunking the table refers to. ; ; Define tables of offsets to tables indexed by message number. ; The tables self-check the accuracy of ordering of entries. ;-----------------------------------------------------------------------; DefMsgTable macro list:req,table_suffix:req,table_size:req,direction:req local tbl, tbl_entry, table_index ; Create and execute a statement of the form: ; ; tbl equ cat ,!<,aw,&direction,&table_suffix,,!> ; Define the array of tables and declare its name. % externDef tbl:word % tbl label word table_index = 0 for x, if table_index NE CLASS_&x .err endif ; Create and execute a statement of the form: ; ; tbl_entry equ , or ; tbl_entry equ ifidni <&table_size>, cat ,!<,ab,x,&direction,&table_suffix,!> else ifidni <&table_size>, cat ,!<,aw,x,&direction,&table_suffix,!> else ;unrecognized table size .err endif endif ; Create a table entry and declare its name. % externDef tbl_entry:&table_size % dw offset tbl_entry table_index = table_index + 1 endm endm ;-----------------------------------------------------------------------; ; DefAllExternMsgTables ; ; list ; The list of table code-names from which to create tables. ; ; direction ; The direction of the thunks (i.e. LS or SL). ; ; Create all the necessary tables for dispatching message thunks in ; the given direction. ;-----------------------------------------------------------------------; DefAllExternMsgTables macro list:req, direction:req local symbol_name for x, ; Create and execute a statement of the form: ; ; symbol_name equ cat ,!<,aw,x,&direction,Offset,!> % externDef symbol_name:word ; Create and execute a statement of the form: ; ; symbol_name equ cat ,!<,ab,x,&direction,Index,!> % externDef symbol_name:byte ; Create and execute a statement of the form: ; ; symbol_name equ cat ,!<,ab,x,&direction,Ret,!> % externDef symbol_name:byte endm endm ; --------------- ; FROM MSGTBL.INC ; --------------- ;-----------------------------------------------------------------------; ; thk ; ; name ; A message name. ; ; number ; A message number. ; ; afSpecial ; A list (in angle brackets) of the various directions of special ; thunks needed for this message. The valid codes are: ; ; SL ==> special thunk required going short to long (16->32) ; LS ==> special thunk required going long to short (32->16) ; ; A message may only require a thunk in one direction, in which ; case only the one appropriate code should be given. ; ; ret_type ; A code specifying the return type of the message. ; ; fDefNoStruc ; Indicates whether or not the default thunk applies when ; the TF_NOSTRUC flag is set. If so, the only action in the ; SL direction is to combine wParamLo & wParamHi; in the LS ; direction, to split up wParam into wParamLo and wParamHi. ; ; Example: ; ; thk WM_CREATE,1,,RC_BOOL ; ; Dependencies: ; This macro depends on the definition of the two constants: ; ; "dir" the direction of the thunks being defined ; "tbl" the code name of the thunk table ; ; The thk macro creates the symbols used to check for special thunks. ; It also generates the thunk entries by invoking the add_thunk macro. ; No code is generated, but the symbols created are used to produce ; code later on by make_index_entries, make_thunk_entries, and ; make_ret_entries. ; ; This macro allows all the thunk dispatch information needed about a ; message to be defined in one place, to make maintaining the big list ; of messages easier. The list itself is in a separate include file ; (msg.inc). ;-----------------------------------------------------------------------; thk macro name:req,number:req,afSpecial,ret_type:=,fDefNoStruc:=<0> local has_thunk, msg, low_msg, high_msg ;; Update highest message number processed. Messages must be sorted, ;; so if number does not increase it's an error. If there is a gap ;; of one or more messages between the previously highest number andu ;; the new one, fill in the index_xxyy_## values with the value ;; UNIMPLEMENTED_THUNK. In the debug build, if one of these messages ;; is used, a warning will be displayed on the debug terminal. if max_msg LT number if max_msg LT (number + 1) low_msg = max_msg + 1 high_msg = number - 1 msg = low_msg repeat (high_msg - low_msg + 1) add_null_thunk %tbl, %msg, UNIMPLEMENTED_THUNK msg = msg + 1 endm endif max_msg = number else .err endif ;;If the message has a special thunk, define the symbols necessary to ;;build the proper dispatch tables. ifnb has_thunk = 0 for x, has_thunk = has_thunk or check_thunk(x) endm if has_thunk add_thunk %tbl, name, %max_msg, ret_type, fDefNoStruc else add_null_thunk %tbl, %max_msg, COMMON_THUNK, ret_type endif else add_null_thunk %tbl, %max_msg, COMMON_THUNK, ret_type endif endm ;-----------------------------------------------------------------------; ; begin_thunk_table ; ; This macro initializes the variables used by thk. ; ; tbl_base lowest message number in table ; tbl_limit highest message number in table ; max_msg highest message number processed so far ; max_index next index into table of thunk procedure offsets ;-----------------------------------------------------------------------; begin_thunk_table macro table_name:req tbl equ <&table_name> DefTableLimits table_name max_msg = tbl_base - 1 max_index = 1 endm ;-----------------------------------------------------------------------; ; end_thunk_table ; ; This macro defines all message indices from max_msg+1 to tbl_limit as ; UNIMPLEMENTED_THUNK. This saves the message thunk dispatcher from ; having to do an extra test for the last defined message. ;-----------------------------------------------------------------------; end_thunk_table macro local high_msg, low_msg, msg ;;Check that our table isn't too big. % if max_msg GT tbl_limit .err endif % if max_msg LT tbl_limit low_msg = max_msg + 1 high_msg = tbl_limit msg = low_msg % rept (high_msg - low_msg + 1) add_null_thunk %tbl,%msg,UNIMPLEMENTED_THUNK msg = msg + 1 endm max_msg = tbl_limit endif endm ;-----------------------------------------------------------------------; ; check_thunk ; ; flag ; An item from the list of special flags given to the thk macros ; in msg.inc. These flags indicate whether a message has a special ; thunk in each direction. "flag" is one of the flags. ; ; Macro function which returns 1 (TRUE) if "flag" has the same value as ; "dir", 0 (FALSE) otherwise. ; ; This macro is invoked by the thk macro in order to know whether to ; invoke add_thunk or add_null_thunk. ;-----------------------------------------------------------------------; check_thunk macro flag:req local has_thunk has_thunk = 0 % ifidni , has_thunk = 1 endif exitm %has_thunk endm ;-----------------------------------------------------------------------; ; add_thunk ; ; tbl ; Code for table (i.e. WM, etc.). ; ; name ; The name of a message for which a thunk dispatch table entry ; should be created. ; ; number ; The corresponding message number. ; ; ret_type ; A code specifying the return type of the message. ; ; fDefNoStruc ; Indicates whether or not the default thunk applies when ; the TF_NOSTRUC flag is set. If so, the only action in the ; SL direction is to zero-extend wParam; in the LS direction, ; to truncate wParam. ; ; ; This macro is invoked by the thk macro. It creates the symbols that ; will be used by the table creation macros invoked at the end of this ; file. ; ; The labels take the form of pfn_xxyy_## and index_xxyy_## where ; xx is the table code, yy is the direction, and ## is a message number ; in decimal. ; ; pfn_WMSL_1 equ WMSL_WM_CREATE ; index_WMSL_1 equ 2 ; ret_WMSL_1 equ RC_BOOL ; ; The pfn_xxyy_## symbol records the thunk procedure address for ; message number ## in table xx in the yy direction, and the index_xxyy_## ; records its position in the compacted table of thunk procedure offsets. All ; messages have a corresponding index_xxyy_## symbol. If the symbol value is ; COMMON_THUNK or UNIMPLEMENTED_THUNK, then there is no special thunk for the ; message and there is no corresponding pfn_xxyy_## symbol. If the symbol ; value is nonzero, pfn_xxyy_## is defined. ; ; The pfn_xxyy_## values are 16-bit addresses. The address of the ; first thunk procedure is subtracted to create a 16-bit offset before ; storing in the thunk offset table. ; ; The ret_xxyy_## symbol holds the return type of the message, used for ; building a table the dispatcher will use to correctly thunk the message ; return code. ; ; The variable max_index keeps track of what the next nonzero index ; should be. The first entry in the thunk offset table is the default thunk, ; so special thunks start at index 1. Only one table is processed at a ; time, so max_index is re-used by all. ;-----------------------------------------------------------------------; add_thunk macro tbl:req,name:req,number:req,ret_type:=,fDefNoStruc:=<0> ;; Create and execute statement such as: ;; ;; pfn_WMSL_1 equ WMSL_WM_CREATE cat pfn_,&tbl,%dir,_,number,< equ >,&tbl,%dir,_,&name ;; Create and execute statement such as: ;; ;; index_WMSL_1 equ max_index cat index_,&tbl,%dir,_,number,< equ max_index> ;; Create and execute statement such as: ;; ;; ret_WMSL_1 equ RC_BOOL cat ret_,&tbl,%dir,_,number,< equ >,&ret_type ;; Create and execute statement such as: ;; ;; no_struc_1 equ 0 cat no_struc_,number,< equ >,&fDefNoStruc ;; Increment by 2 because it is an index into a table of words. max_index = max_index + 1 ;; Index 0FFh is used to indicate unimplemented thunks. .erre max_index - 0FFh endm ;-----------------------------------------------------------------------; ; add_null_thunk ; ; tbl ; Code for table (i.e. WM, BM, etc.). ; ; number ; The corresponding message number. ; ; value ; The index value to give the message number. This can be either ; COMMON_THUNK or UNIMPLEMENTED_THUNK. ; ; ret_type ; A code specifying the return type of the message. ; ; Same as add_thunk, except only index_xxyy_## is defined. ;-----------------------------------------------------------------------; add_null_thunk macro tbl:req,number:req,value:=,ret_type:= ifdef DEBUG ;; Create and execute statement such as: ;; ;; index_WMSL_1 equ COMMON_THUNK cat index_,&tbl,%dir,_,number,< equ >,&value else ;if RETAIL, no message will have index UNIMPLEMENTED_THUNK since dispatcher ;won't make special case for it ;; Create and execute statement such as: ;; ;; index_WMSL_1 equ COMMON_THUNK cat index_,&tbl,%dir,_,number,< equ >,COMMON_THUNK endif ;; Create and execute statement such as: ;; ;; ret_WMSL_1 equ RC_BOOL cat ret_,&tbl,%dir,_,number,< equ >,&ret_type ;; Create and execute statement such as: ;; ;; no_struc_1 equ 0 cat no_struc_,number,< equ 0> endm ;-----------------------------------------------------------------------; ; make_thunk_entries ; ; tbl ; Code name of table being created. ; ; This macro uses the symbols created by thk to define the thunk ; entry tables in memory. It enumerates all the index_xxyy_## symbols ; and makes an entry in the thunk procedure offset table for each ; nonzero value. ;-----------------------------------------------------------------------; make_thunk_entries macro tbl:req local symbol_index, symbol_pfn, msgnum DefTableLimits tbl ;;Create and execute a statement such as: ;; ;; dw offset WMLS_COMMON cat ,&tbl,%dir,_COMMON msgnum = tbl_base % rept tbl_limit - tbl_base + 1 ;; Create and execute a statement such as: ;; ;; symbol_index equ cat ,!<,index_,&tbl,%dir,_,%msgnum,!> % if symbol_index NE COMMON_THUNK % if symbol_index NE UNIMPLEMENTED_THUNK ;; Create and execute a statement such as: ;; ;; symbol_pfn equ cat ,!<,pfn_,&tbl,%dir,_,%msgnum,!> % dw offset symbol_pfn endif endif msgnum = msgnum + 1 endm endm ;-----------------------------------------------------------------------; ; make_index_entries ; ; tbl ; Code name of table being created. ; ; This macro uses the symbols created by thk to define the index ; array in memory. The index array is checked by the thunk dispatcher ; to determine if a message has a special thunk. Messages without ; special thunks (most of them) go through a standard thunk. If the ; index is nonzero, then it is used to look up the offset of the thunk ; procedure in another table. ; ; This table will have the index_xxyy_## value for each message for ; the given thunk class. ;-----------------------------------------------------------------------; make_index_entries macro tbl:req local msgnum DefTableLimits tbl msgnum = tbl_base % rept tbl_limit - tbl_base + 1 ;; Create and execute statement such as: ;; ;; db index_WMLS_1 cat ,tbl,%dir,_,%msgnum msgnum = msgnum + 1 endm endm ;-----------------------------------------------------------------------; ; make_ret_entries ; ; tbl ; Code name of table being created. ; ; This macro uses the symbols created by thk to define the return-type ; array in memory. The return-type array is checked by the thunk dispatcher ; to determine if a message return code requires thunking. ; ; This table will have the ret_xxyy_## value for each message for ; the given thunk class. ;-----------------------------------------------------------------------; make_ret_entries macro tbl:req local msgnum DefTableLimits tbl msgnum = tbl_base % rept tbl_limit - tbl_base + 1 ;; Create and execute statement such as: ;; ;; db ret_WMLS_1 cat ,tbl,%dir,_,%msgnum msgnum = msgnum + 1 endm endm ;-----------------------------------------------------------------------; ; make_no_struc_entries ; ; This macro uses the symbols created by thk to define the TF_NOSTRUC ; array in memory. The TF_NOSTRUC array is checked by the api thunk ; to determine if a message requires special thunking. ; ; This table will have the no_struc_xxyy_## value for each message ; in the WM class. ;-----------------------------------------------------------------------; make_no_struc_entries macro local msgnum DefTableLimits WM msgnum = tbl_base % rept tbl_limit - tbl_base + 1 ;; Create and execute statement such as: ;; ;; db no_struc_1 cat ,%msgnum msgnum = msgnum + 1 endm endm ;-----------------------------------------------------------------------; ; DefIndexTable ; ; direction ; The direction of thunking the table refers to. ; ; Creates a table containing indices into the corresponding table ; of thunk procedure offsets. ;-----------------------------------------------------------------------; DefIndexTable macro local symbol_name ;; Create and execute a statement of the form: ;; ;; symbol_name equ cat ,!<,ab,WM,Index,!> ;; Define the array of tables and declare its name. % externDef symbol_name:byte % symbol_name label byte ;; Define the table's contents and verify that it has the right size. make_index_entries WM % .errnz ($ - symbol_name) - C_WM endm ;-----------------------------------------------------------------------; ; DefOffsetTable ; ; direction ; The direction of thunking the table refers to. ; ; Creates a table containing the offsets to special thunk procedures. ; The table is packed, and many messages do not have special thunks, ; so there is another table used to map a message number to the proper ; element of this table. The dispatcher will not look in this array ; unless the message has a special thunk. ;-----------------------------------------------------------------------; DefOffsetTable macro direction:req local symbol_name ;; Create and execute a statement of the form: ;; ;; symbol_name equ cat ,!<,aw,WM,&direction,Offset,!> ;; Define the array of tables and declare its name. % externDef symbol_name:word % symbol_name label word ;; Define the table's contents and verify that it has the right size. make_thunk_entries WM endm ;-----------------------------------------------------------------------; ; DefRetTable ; ; direction ; The direction of thunking the table refers to. ; ; Creates a table containing indices into the table of addresses of ; return-code thunks. ;-----------------------------------------------------------------------; DefRetTable macro direction:req local symbol_name ;; Create and execute a statement of the form: ;; ;; symbol_name equ cat ,!<,ab,WM&direction,Ret,!> ;; Define the array of return-code types and declare its name. % externDef symbol_name:byte % symbol_name label byte make_ret_entries WM % .errnz ($ - symbol_name) - C_WM endm ;-----------------------------------------------------------------------; ; DefNoStrucTable ; ; Creates a table containing flags indicating whether or not a message ; requires a special thunk when the TF_NOSTRUC flag is set. ;-----------------------------------------------------------------------; DefNoStrucTable macro abNoStruc label byte ;; Define the table's contents and verify that it has the right size. make_no_struc_entries % .errnz ($ - abNoStruc) - C_WM endm ;-----------------------------------------------------------------------; ; DefAllMsgTables ; ; direction ; The direction of the thunks (i.e. LS or SL). ; ; Create all the necessary tables for dispatching message thunks in ; the given direction. ;-----------------------------------------------------------------------; DefAllMsgTables macro direction:req DefOffsetTable direction DefIndexTable DefRetTable direction endm ; ---------------- ; FROM NEWMISC.INC ; ---------------- ;-----------------------------------------------------------------------; ; Values for non-special message thunk indices. These indicate that ; the message goes through the common thunk, and whether or not to ; display the message "UNIMPLEMENTED MESSAGE THUNK" to the debug ; terminal. ;-----------------------------------------------------------------------; COMMON_THUNK equ 0 UNIMPLEMENTED_THUNK equ 0FFh ; --------------- ; FROM NEWMSG.INC ; --------------- ;-----------------------------------------------------------------------; ; WM thunk class. This is the main message table, comprising all ; known messages with number less than 400h. ;-----------------------------------------------------------------------; begin_thunk_table WM thk WM_CREATE ,001h , ,RC_DEFAULT thk WM_DESTROY ,002h , ,RC_DEFAULT thk WM_MOVE ,003h , ,RC_DEFAULT thk WM_SIZEWAIT ,004h , ,RC_DEFAULT thk WM_SIZE ,005h , ,RC_DEFAULT thk WM_ACTIVATE ,006h , ,RC_DEFAULT ,1 thk WM_SETFOCUS ,007h , ,RC_DEFAULT thk WM_KILLFOCUS ,008h , ,RC_DEFAULT thk WM_SETVISIBLE ,009h , ,RC_DEFAULT thk WM_ENABLE ,00Ah , ,RC_DEFAULT thk WM_SETREDRAW ,00Bh , ,RC_DEFAULT thk WM_SETTEXT ,00Ch , ,RC_DEFAULT ,1 thk WM_GETTEXT ,00Dh , ,RC_DEFAULT ,1 thk WM_GETTEXTLENGTH ,00Eh , ,RC_DEFAULT thk WM_PAINT ,00Fh , ,RC_DEFAULT thk WM_CLOSE ,010h , ,RC_DEFAULT thk WM_QUERYENDSESSION ,011h , ,RC_DEFAULT thk WM_QUIT ,012h , ,RC_DEFAULT thk WM_QUERYOPEN ,013h , ,RC_DEFAULT thk WM_ERASEBKGND ,014h , ,RC_DEFAULT thk WM_SYSCOLORCHANGE ,015h , ,RC_DEFAULT thk WM_ENDSESSION ,016h , ,RC_DEFAULT thk WM_SYSTEMERROR ,017h , ,RC_DEFAULT thk WM_SHOWWINDOW ,018h , ,RC_DEFAULT thk WM_CTLCOLOR ,019h , ,RC_DEFAULT ,1 thk WM_WININICHANGE ,01Ah , ,RC_DEFAULT ,1 thk WM_DEVMODECHANGE ,01Bh , ,RC_DEFAULT ,1 thk WM_ACTIVATEAPP ,01Ch , ,RC_DEFAULT ,1 thk WM_FONTCHANGE ,01Dh , ,RC_DEFAULT thk WM_TIMECHANGE ,01Eh , ,RC_DEFAULT thk WM_CANCELMODE ,01Fh , ,RC_DEFAULT thk WM_SETCURSOR ,020h , ,RC_DEFAULT thk WM_MOUSEACTIVATE ,021h , ,RC_DEFAULT thk WM_CHILDACTIVATE ,022h , ,RC_DEFAULT thk WM_QUEUESYNC ,023h , ,RC_DEFAULT thk WM_GETMINMAXINFO ,024h , ,RC_DEFAULT ;UNIMP: thk WM_LOGOFF, ,025h thk WM_PAINTICON ,026h , ,RC_DEFAULT thk WM_ICONERASEBKGND ,027h , ,RC_DEFAULT thk WM_NEXTDLGCTL ,028h , ,RC_DEFAULT thk WM_ALTTABACTIVE ,029h , ,RC_DEFAULT thk WM_SPOOLERSTATUS ,02Ah , ,RC_DEFAULT thk WM_DRAWITEM ,02Bh , ,RC_DEFAULT thk WM_MEASUREITEM ,02Ch , ,RC_DEFAULT thk WM_DELETEITEM ,02Dh , ,RC_DEFAULT thk WM_VKEYTOITEM ,02Eh , ,RC_DEFAULT thk WM_CHARTOITEM ,02Fh , ,RC_DEFAULT thk WM_SETFONT ,030h , ,RC_DEFAULT thk WM_GETFONT ,031h , ,RC_DEFAULT thk WM_SETHOTKEY ,032h , ,RC_DEFAULT thk WM_GETHOTKEY ,033h , ,RC_DEFAULT thk WM_FILESYSCHANGE ,034h , ,RC_DEFAULT thk WM_ISACTIVEICON ,035h , ,RC_DEFAULT ;UNIMP: thk WM_QUERYPARKICON ,036h , ,RC_DEFAULT thk WM_QUERYDRAGICON ,037h , ,RC_DEFAULT thk WM_WINHELP ,038h , ,RC_DEFAULT thk WM_COMPAREITEM ,039h , ,RC_DEFAULT ;UNIMP: thk WM_FULLSCREEN ,03Ah ;UNIMP: thk WM_CLIENTSHUTDOWN ,03Bh ;UNIMP: thk WM_DDEMLEVENT ,03Ch thk MM_CALCSCROLL ,03Fh , ,RC_DEFAULT ;UNIMP: thk WM_TESTING ,040h , ,RC_DEFAULT thk WM_COMPACTING ,041h , ,RC_DEFAULT thk WM_OTHERWINDOWCREATED ,042h , ,RC_DEFAULT thk WM_OTHERWINDOWDESTROYED ,043h , ,RC_DEFAULT thk WM_COMMNOTIFY ,044h , ,RC_DEFAULT ;UNIMP: thk WM_HOTKEYEVENT ,045h , ,RC_DEFAULT thk WM_WINDOWPOSCHANGING ,046h , ,RC_DEFAULT thk WM_WINDOWPOSCHANGED ,047h , ,RC_DEFAULT thk WM_POWER ,048h , ,RC_DEFAULT ;UNIMP: thk WM_COPYGLOBALDATA ,049h thk WM_COPYDATA ,04Ah , ,RC_DEFAULT thk WM_CANCELJOURNAL ,04Bh ;UNIMP: thk WM_LOGONNOTIFY ,04Ch thk WM_KEYF1 ,04Dh , ,RC_DEFAULT thk WM_NOTIFY ,04Eh , ,RC_DEFAULT ,1 ;UNIMP: thk WM_ACCESS_WINDOW ,04Fh ;UNIMP: thk WM_KBDCHANGEREQUEST ,050h ;UNIMP: thk WM_KBDLAYOUTCHANGE ,051h thk WM_TCARD ,052h , ,RC_DEFAULT thk WM_HELP ,053h , ,RC_DEFAULT ;UNIMP: thk WM_FINALDESTROY ,070h ;UNIMP: thk WM_MEASUREITEM_CLIENTDATA ,071h thk WM_CONTEXTMENU ,07Bh , ,RC_DEFAULT thk WM_STYLECHANGING ,07Ch , ,RC_DEFAULT ,1 thk WM_STYLECHANGED ,07Dh , ,RC_DEFAULT ,1 thk WM_DISPLAYCHANGE ,07Eh , ,RC_DEFAULT thk WM_GETICON ,07Fh , ,RC_DEFAULT thk WM_SETICON ,080h , ,RC_DEFAULT thk WM_NCCREATE ,081h , ,RC_DEFAULT thk WM_NCDESTROY ,082h , ,RC_DEFAULT thk WM_NCCALCSIZE ,083h , ,RC_DEFAULT thk WM_NCHITTEST ,084h , ,RC_DEFAULT thk WM_NCPAINT ,085h , ,RC_DEFAULT thk WM_NCACTIVATE ,086h , ,RC_DEFAULT ,1 thk WM_GETDLGCODE ,087h , ,RC_DEFAULT thk WM_SYNCPAINT ,088h , ,RC_DEFAULT ;UNIMP: thk WM_SYNCTASK ,089h , ,RC_DEFAULT thk WM_NCMOUSEMOVE ,0A0h , ,RC_DEFAULT thk WM_NCLBUTTONDOWN ,0A1h , ,RC_DEFAULT thk WM_NCLBUTTONUP ,0A2h , ,RC_DEFAULT thk WM_NCLBUTTONDBLCLK ,0A3h , ,RC_DEFAULT thk WM_NCRBUTTONDOWN ,0A4h , ,RC_DEFAULT thk WM_NCRBUTTONUP ,0A5h , ,RC_DEFAULT thk WM_NCRBUTTONDBLCLK ,0A6h , ,RC_DEFAULT thk WM_NCMBUTTONDOWN ,0A7h , ,RC_DEFAULT thk WM_NCMBUTTONUP ,0A8h , ,RC_DEFAULT thk WM_NCMBUTTONDBLCLK ,0A9h , ,RC_DEFAULT ;Edit control messages. ;All have to be thunked because the message number changes. thk EM_GETSEL ,0B0h , ,RC_DEFAULT thk EM_SETSEL ,0B1h , ,RC_DEFAULT thk EM_GETRECT ,0B2h , ,RC_DEFAULT ,1 thk EM_SETRECT ,0B3h , ,RC_DEFAULT ,1 thk EM_SETRECTNP ,0B4h , ,RC_DEFAULT ,1 thk EM_SCROLL ,0B5h , ,RC_DEFAULT thk EM_LINESCROLL ,0B6h , ,RC_DEFAULT thk EM_SCROLLCARET ,0B7h , ,RC_DEFAULT thk EM_GETMODIFY ,0B8h , ,RC_DEFAULT thk EM_SETMODIFY ,0B9h , ,RC_DEFAULT thk EM_GETLINECOUNT ,0BAh , ,RC_DEFAULT thk EM_LINEINDEX ,0BBh , ,RC_DEFAULT ;UNIMP: thk EM_SETHANDLE ,0BCh , ,RC_DEFAULT ;UNIMP: thk EM_GETHANDLE ,0BDh , ,RC_DEFAULT thk EM_GETTHUMB ,0BEh , ,RC_DEFAULT ;UNIMP: *************************** ,0BFh ;UNIMP: *************************** ,0C0h thk EM_LINELENGTH ,0C1h , ,RC_DEFAULT ,1 thk EM_REPLACESEL ,0C2h , ,RC_DEFAULT ,1 ;UNIMP: thk EM_SETFONT ,0C3h , ,RC_DEFAULT thk EM_GETLINE ,0C4h , ,RC_DEFAULT ,1 thk EM_LIMITTEXT ,0C5h , ,RC_DEFAULT thk EM_CANUNDO ,0C6h , ,RC_DEFAULT thk EM_UNDO ,0C7h , ,RC_DEFAULT thk EM_FMTLINES ,0C8h , ,RC_DEFAULT thk EM_LINEFROMCHAR ,0C9h , ,RC_DEFAULT ;UNIMP: thk EM_SETWORDBREAK ,0CAh , ,RC_DEFAULT ,1 thk EM_SETTABSTOPS ,0CBh , ,RC_DEFAULT ,1 thk EM_SETPASSWORDCHAR ,0CCh , ,RC_DEFAULT thk EM_EMPTYUNDOBUFFER ,0CDh , ,RC_DEFAULT thk EM_GETFIRSTVISIBLELINE ,0CEh , ,RC_DEFAULT ,1 thk EM_SETREADONLY ,0CFh , ,RC_DEFAULT thk EM_SETWORDBREAKPROC ,0D0h , ,RC_DEFAULT ,1 thk EM_GETWORDBREAKPROC ,0D1h , ,RC_GETWORDBREAKPROC,1 thk EM_GETPASSWORDCHAR ,0D2h , ,RC_DEFAULT thk EM_SETMARGINS ,0D3h , ,RC_DEFAULT thk EM_GETMARGINS ,0D4h , ,RC_DEFAULT thk EM_GETLIMITTEXT ,0D5h , ,RC_DEFAULT thk EM_POSFROMCHAR ,0D6h , ,RC_DEFAULT thk EM_CHARFROMPOS ,0D7h , ,RC_DEFAULT ;Scroll bar messages. thk SBM_SETPOS ,0E0h , ,RC_DEFAULT thk SBM_GETPOS ,0E1h , ,RC_DEFAULT thk SBM_SETRANGE ,0E2h , ,RC_DEFAULT thk SBM_GETRANGE ,0E3h , ,RC_DEFAULT thk SBM_ENABLE_ARROWS ,0E4h , ,RC_DEFAULT thk SBM_SETRANGEREDRAW ,0E6h , ,RC_DEFAULT thk SBM_SETPAGE ,0E7h , ,RC_DEFAULT thk SBM_GETPAGE ,0E8h , ,RC_DEFAULT thk SBM_SETSCROLLINFO ,0E9h , ,RC_DEFAULT ,1 thk SBM_GETSCROLLINFO ,0EAh , ,RC_DEFAULT ,1 ;Button control messages. ;All have to be thunked because the message number changes. thk BM_GETCHECK ,0F0h , ,RC_DEFAULT thk BM_SETCHECK ,0F1h , ,RC_DEFAULT thk BM_GETSTATE ,0F2h , ,RC_DEFAULT thk BM_SETSTATE ,0F3h , ,RC_DEFAULT thk BM_SETSTYLE ,0F4h , ,RC_DEFAULT thk BM_CLICK ,0F5h , ,RC_DEFAULT thk BM_GETICON ,0F6h , ,RC_DEFAULT thk BM_SETICON ,0F7h , ,RC_DEFAULT thk BM_GETBITMAP ,0F8h , ,RC_DEFAULT thk BM_SETBITMAP ,0F9h , ,RC_DEFAULT thk WM_KEYDOWN ,100h , ,RC_DEFAULT thk WM_KEYUP ,101h , ,RC_DEFAULT thk WM_CHAR ,102h , ,RC_DEFAULT thk WM_DEADCHAR ,103h , ,RC_DEFAULT thk WM_SYSKEYDOWN ,104h , ,RC_DEFAULT thk WM_SYSKEYUP ,105h , ,RC_DEFAULT thk WM_SYSCHAR ,106h , ,RC_DEFAULT thk WM_SYSDEADCHAR ,107h , ,RC_DEFAULT ;UNIMP: thk WM_YOMICHAR ,108h , ,RC_DEFAULT ;UNIMP: thk WM_CONVERTREQUEST ,10Ah , ,RC_DEFAULT ;UNIMP: thk WM_CONVERTRESULT ,10Bh , ,RC_DEFAULT thk WM_INITDIALOG ,110h , ,RC_DEFAULT thk WM_COMMAND ,111h , ,RC_DEFAULT ,1 thk WM_SYSCOMMAND ,112h , ,RC_DEFAULT thk WM_TIMER ,113h , ,RC_DEFAULT thk WM_HSCROLL ,114h , ,RC_DEFAULT ,1 thk WM_VSCROLL ,115h , ,RC_DEFAULT ,1 thk WM_INITMENU ,116h , ,RC_DEFAULT thk WM_INITMENUPOPUP ,117h , ,RC_DEFAULT thk WM_SYSTIMER ,118h , ,RC_DEFAULT thk WM_MENUSELECT ,11Fh , ,RC_DEFAULT ,1 thk WM_MENUCHAR ,120h , ,RC_DEFAULT ,1 thk WM_ENTERIDLE ,121h , ,RC_DEFAULT ,1 thk WM_LBTRACKPOINT ,131h , ,RC_DEFAULT thk WM_CTLCOLORMSGBOX ,132h , ,RC_DEFAULT ,1 thk WM_CTLCOLOREDIT ,133h , ,RC_DEFAULT ,1 thk WM_CTLCOLORLISTBOX ,134h , ,RC_DEFAULT ,1 thk WM_CTLCOLORBTN ,135h , ,RC_DEFAULT ,1 thk WM_CTLCOLORDLG ,136h , ,RC_DEFAULT ,1 thk WM_CTLCOLORSCROLLBAR ,137h , ,RC_DEFAULT ,1 thk WM_CTLCOLORSTATIC ,138h , ,RC_DEFAULT ,1 ;Combobox control messages. ;All have to be thunked because the message number changes. thk CB_GETEDITSEL ,140h , ,RC_DEFAULT thk CB_LIMITTEXT ,141h , ,RC_DEFAULT thk CB_SETEDITSEL ,142h , ,RC_DEFAULT thk CB_ADDSTRING ,143h , ,RC_DEFAULT ,1 thk CB_DELETESTRING ,144h , ,RC_DEFAULT thk CB_DIR ,145h , ,RC_DEFAULT ,1 thk CB_GETCOUNT ,146h , ,RC_DEFAULT thk CB_GETCURSEL ,147h , ,RC_DEFAULT thk CB_GETLBTEXT ,148h , ,RC_DEFAULT ,1 thk CB_GETLBTEXTLEN ,149h , ,RC_DEFAULT thk CB_INSERTSTRING ,14Ah , ,RC_DEFAULT ,1 thk CB_RESETCONTENT ,14Bh , ,RC_DEFAULT thk CB_FINDSTRING ,14Ch , ,RC_DEFAULT ,1 thk CB_SELECTSTRING ,14Dh , ,RC_DEFAULT ,1 thk CB_SETCURSEL ,14Eh , ,RC_DEFAULT thk CB_SHOWDROPDOWN ,14Fh , ,RC_DEFAULT thk CB_GETITEMDATA ,150h , ,RC_DEFAULT thk CB_SETITEMDATA ,151h , ,RC_DEFAULT thk CB_GETDROPPEDCONTROLRECT,152h , ,RC_DEFAULT ,1 thk CB_SETITEMHEIGHT ,153h , ,RC_DEFAULT thk CB_GETITEMHEIGHT ,154h , ,RC_DEFAULT thk CB_SETEXTENDEDUI ,155h , ,RC_DEFAULT thk CB_GETEXTENDEDUI ,156h , ,RC_DEFAULT thk CB_GETDROPPEDSTATE ,157h , ,RC_DEFAULT thk CB_FINDSTRINGEXACT ,158h , ,RC_DEFAULT ,1 ;; thk CB_SETLOCALE ,159h ;; thk CB_GETLOCALE ,15Ah thk CB_GETTOPINDEX ,15Bh , ,RC_DEFAULT thk CB_SETTOPINDEX ,15Ch , ,RC_DEFAULT thk CB_GETHORIZONTALEXTENT ,15Dh , ,RC_DEFAULT thk CB_SETHORIZONTALEXTENT ,15Eh , ,RC_DEFAULT thk CB_GETDROPPEDWIDTH ,15Fh , ,RC_DEFAULT thk CB_SETDROPPEDWIDTH ,160h , ,RC_DEFAULT thk CB_INITSTORAGE ,161h , ,RC_DEFAULT ; thk CB_MSGMAX ,162h ,1 ;Static control messages. thk STM_SETICON ,170h , ,RC_DEFAULT ,1 thk STM_GETICON ,171h , ,RC_DEFAULT ,1 thk STM_SETBITMAP ,172h , ,RC_DEFAULT ,1 thk STM_GETBITMAP ,173h , ,RC_DEFAULT ,1 thk STM_SETMETAPICT ,174h , ,RC_DEFAULT ,1 thk STM_GETMETAPICT ,175h , ,RC_DEFAULT ,1 ;Listbox control messages. ;All have to be thunked because the message number changes. thk LB_ADDSTRING ,180h , ,RC_DEFAULT ,1 thk LB_INSERTSTRING ,181h , ,RC_DEFAULT ,1 thk LB_DELETESTRING ,182h , ,RC_DEFAULT ;UNIMP: *************************** ,183h thk LB_RESETCONTENT ,184h , ,RC_DEFAULT thk LB_SETSEL ,185h , ,RC_DEFAULT thk LB_SETCURSEL ,186h , ,RC_DEFAULT thk LB_GETSEL ,187h , ,RC_DEFAULT thk LB_GETCURSEL ,188h , ,RC_DEFAULT thk LB_GETTEXT ,189h , ,RC_DEFAULT ,1 thk LB_GETTEXTLEN ,18Ah , ,RC_DEFAULT thk LB_GETCOUNT ,18Bh , ,RC_DEFAULT thk LB_SELECTSTRING ,18Ch , ,RC_DEFAULT ,1 thk LB_DIR ,18Dh , ,RC_DEFAULT ,1 thk LB_GETTOPINDEX ,18Eh , ,RC_DEFAULT thk LB_FINDSTRING ,18Fh , ,RC_DEFAULT ,1 thk LB_GETSELCOUNT ,190h , ,RC_DEFAULT thk LB_GETSELITEMS ,191h , ,RC_DEFAULT ,1 thk LB_SETTABSTOPS ,192h , ,RC_DEFAULT ,1 thk LB_GETHORIZONTALEXTENT ,193h , ,RC_DEFAULT thk LB_SETHORIZONTALEXTENT ,194h , ,RC_DEFAULT thk LB_SETCOLUMNWIDTH ,195h , ,RC_DEFAULT thk LB_ADDFILE ,196h , ,RC_DEFAULT ,1 thk LB_SETTOPINDEX ,197h , ,RC_DEFAULT thk LB_GETITEMRECT ,198h , ,RC_DEFAULT ,1 thk LB_GETITEMDATA ,199h , ,RC_DEFAULT thk LB_SETITEMDATA ,19Ah , ,RC_DEFAULT thk LB_SELITEMRANGE ,19Bh , ,RC_DEFAULT thk LB_SETANCHORINDEX ,19Ch , ,RC_DEFAULT thk LB_GETANCHORINDEX ,19Dh , ,RC_DEFAULT thk LB_SETCARETINDEX ,19Eh , ,RC_DEFAULT thk LB_GETCARETINDEX ,19Fh , ,RC_DEFAULT thk LB_SETITEMHEIGHT ,1A0h , ,RC_DEFAULT thk LB_GETITEMHEIGHT ,1A1h , ,RC_DEFAULT thk LB_FINDSTRINGEXACT ,1A2h , ,RC_DEFAULT ,1 thk LBCB_CARETON ,1A3h , ,RC_DEFAULT thk LBCB_CARETOFF ,1A4h , ,RC_DEFAULT thk LB_SETLOCALE ,1A5h , ,RC_DEFAULT thk LB_GETLOCALE ,1A6h , ,RC_DEFAULT thk LB_SETCOUNT ,1A7h , ,RC_DEFAULT thk LB_ITEMFROMPOINT ,1A8h , ,RC_DEFAULT thk WM_MOUSEMOVE ,200h , ,RC_DEFAULT thk WM_LBUTTONDOWN ,201h , ,RC_DEFAULT thk WM_LBUTTONUP ,202h , ,RC_DEFAULT thk WM_LBUTTONDBLCLK ,203h , ,RC_DEFAULT thk WM_RBUTTONDOWN ,204h , ,RC_DEFAULT thk WM_RBUTTONUP ,205h , ,RC_DEFAULT thk WM_RBUTTONDBLCLK ,206h , ,RC_DEFAULT thk WM_MBUTTONDOWN ,207h , ,RC_DEFAULT thk WM_MBUTTONUP ,208h , ,RC_DEFAULT thk WM_MBUTTONDBLCLK ,209h , ,RC_DEFAULT thk WM_PARENTNOTIFY ,210h , ,RC_DEFAULT ,1 thk WM_ENTERMENULOOP ,211h , ,RC_DEFAULT thk WM_EXITMENULOOP ,212h , ,RC_DEFAULT ; thk WM_NEXTMENU ,213h , ,RC_NEXTMENU,1 thk WM_NEXTMENU ,213h , ,RC_DEFAULT thk WM_SIZING ,214h , ,RC_DEFAULT thk WM_CAPTURECHANGED ,215h , ,RC_DEFAULT thk WM_MOVING ,216h , ,RC_DEFAULT thk WM_DEVICEBROADCAST ,217h , ,RC_DEFAULT thk WM_MDICREATE ,220h , ,RC_DEFAULT ,1 thk WM_MDIDESTROY ,221h , ,RC_DEFAULT thk WM_MDIACTIVATE ,222h , ,RC_DEFAULT ,1 thk WM_MDIRESTORE ,223h , ,RC_DEFAULT thk WM_MDINEXT ,224h , ,RC_DEFAULT thk WM_MDIMAXIMIZE ,225h , ,RC_DEFAULT thk WM_MDITILE ,226h , ,RC_DEFAULT thk WM_MDICASCADE ,227h , ,RC_DEFAULT thk WM_MDIICONARRANGE ,228h , ,RC_DEFAULT thk WM_MDIGETACTIVE ,229h , ,RC_MDIGETACTIVE thk WM_DROPOBJECT ,22Ah , ,RC_DEFAULT thk WM_QUERYDROPOBJECT ,22Bh , ,RC_DEFAULT thk WM_BEGINDRAG ,22Ch , ,RC_DEFAULT thk WM_DRAGLOOP ,22Dh , ,RC_DEFAULT thk WM_DRAGSELECT ,22Eh , ,RC_DEFAULT thk WM_DRAGMOVE ,22Fh , ,RC_DEFAULT thk WM_MDISETMENU ,230h , ,RC_DEFAULT ,1 thk WM_ENTERSIZEMOVE ,231h , ,RC_DEFAULT thk WM_EXITSIZEMOVE ,232h , ,RC_DEFAULT thk WM_DROPFILES ,233h , ,RC_DEFAULT ,1 thk WM_MDIREFRESHMENU ,234h , ,RC_DEFAULT ; thk WM_KANJIFIRST ,280h , ,RC_DEFAULT ; thk WM_KANJILAST ,29Fh , ,RC_DEFAULT thk WM_CUT ,300h , ,RC_DEFAULT thk WM_COPY ,301h , ,RC_DEFAULT thk WM_PASTE ,302h , ,RC_DEFAULT thk WM_CLEAR ,303h , ,RC_DEFAULT thk WM_UNDO ,304h , ,RC_DEFAULT thk WM_RENDERFORMAT ,305h , ,RC_DEFAULT thk WM_RENDERALLFORMATS ,306h , ,RC_DEFAULT thk WM_DESTROYCLIPBOARD ,307h , ,RC_DEFAULT thk WM_DRAWCLIPBOARD ,308h , ,RC_DEFAULT thk WM_PAINTCLIPBOARD ,309h , ,RC_DEFAULT ,1 thk WM_VSCROLLCLIPBOARD ,30Ah , ,RC_DEFAULT thk WM_SIZECLIPBOARD ,30Bh , ,RC_DEFAULT ,1 thk WM_ASKCBFORMATNAME ,30Ch , ,RC_DEFAULT ,1 thk WM_CHANGECBCHAIN ,30Dh , ,RC_DEFAULT ,1 thk WM_HSCROLLCLIPBOARD ,30Eh , ,RC_DEFAULT thk WM_QUERYNEWPALETTE ,30Fh , ,RC_DEFAULT ;UNIMP: thk WM_PALETTEISCHANGING ,310h , ,RC_DEFAULT thk WM_PALETTECHANGED ,311h , ,RC_DEFAULT thk WM_HOTKEY ,312h , ,RC_DEFAULT ,1 ;UNIMP: thk WM_HOOKMSG ,314h ;UNIMP: thk WM_EXITPROCESS ,315h ;UNIMP: thk WM_WAKETHREAD ,316h thk WM_PRINT ,317h , ,RC_DEFAULT thk WM_PRINTCLIENT ,318h , ,RC_DEFAULT thk WM_AFXFIRST ,360h , ,RC_DEFAULT thk WM_AFX2 ,361h , ,RC_DEFAULT thk WM_AFX3 ,362h , ,RC_DEFAULT thk WM_AFX4 ,363h , ,RC_DEFAULT thk WM_AFX5 ,364h , ,RC_DEFAULT thk WM_AFX6 ,365h , ,RC_DEFAULT thk WM_AFX7 ,366h , ,RC_DEFAULT thk WM_AFX8 ,367h , ,RC_DEFAULT thk WM_AFX9 ,368h , ,RC_DEFAULT thk WM_AFX10 ,369h , ,RC_DEFAULT thk WM_AFX11 ,36Ah , ,RC_DEFAULT thk WM_AFX12 ,36Bh , ,RC_DEFAULT thk WM_AFX13 ,36Ch , ,RC_DEFAULT thk WM_AFX14 ,36Dh , ,RC_DEFAULT thk WM_AFX15 ,36Eh , ,RC_DEFAULT thk WM_AFX16 ,36Fh , ,RC_DEFAULT thk WM_AFX17 ,370h , ,RC_DEFAULT thk WM_AFX18 ,371h , ,RC_DEFAULT thk WM_AFX19 ,372h , ,RC_DEFAULT thk WM_AFX20 ,373h , ,RC_DEFAULT thk WM_AFX21 ,374h , ,RC_DEFAULT thk WM_AFX22 ,375h , ,RC_DEFAULT thk WM_AFX23 ,376h , ,RC_DEFAULT thk WM_AFX24 ,377h , ,RC_DEFAULT thk WM_AFX25 ,378h , ,RC_DEFAULT thk WM_AFX26 ,379h , ,RC_DEFAULT thk WM_AFX27 ,37Ah , ,RC_DEFAULT thk WM_AFX28 ,37Bh , ,RC_DEFAULT thk WM_AFX29 ,37Ch , ,RC_DEFAULT thk WM_AFX30 ,37Dh , ,RC_DEFAULT thk WM_AFX31 ,37Eh , ,RC_DEFAULT thk WM_AFXLAST ,37Fh , ,RC_DEFAULT ; thk WM_PENWINFIRST ,380h , ,RC_DEFAULT ; thk WM_PENWINLAST ,38Fh , ,RC_DEFAULT ; thk WM_COALESCE_FIRST ,390h , ,RC_DEFAULT ; thk WM_COALESCE_LAST ,39Fh , ,RC_DEFAULT ; thk WM_MM_RESERVED_FIRST ,3A0h , ,RC_DEFAULT ; thk WM_MM_RESERVED_LAST ,3DFh , ,RC_DEFAULT thk WM_DDE_INITIATE ,3E0h , ,RC_DEFAULT thk WM_DDE_TERMINATE ,3E1h , ,RC_DEFAULT thk WM_DDE_ADVISE ,3E2h , ,RC_DEFAULT thk WM_DDE_UNADVISE ,3E3h , ,RC_DEFAULT thk WM_DDE_ACK ,3E4h , ,RC_DEFAULT thk WM_DDE_DATA ,3E5h , ,RC_DEFAULT thk WM_DDE_REQUEST ,3E6h , ,RC_DEFAULT thk WM_DDE_POKE ,3E7h , ,RC_DEFAULT thk WM_DDE_EXECUTE ,3E8h , ,RC_DEFAULT, 1 ; thk WM_INTERNAL_DDE_LAST ,3EFh , ,RC_DEFAULT ; thk WM_CBT_RESERVED_FIRST ,3F0h , ,RC_DEFAULT ; thk WM_CBT_RESERVED_LSAT ,3FFh , ,RC_DEFAULT end_thunk_table ; ------------ ; FROM RET.INC ; ------------ BeginDefRetType macro ret_type_id = 0 endm DefRetType macro name RC_&name equ ret_type_id ifdef dir ;Create and execute a statement of the form: ; ; RC_0 equ cat RC_,%ret_type_id,< equ >,!<,RC,%dir,_,&name,!> endif ret_type_id = ret_type_id + 1 endm EndDefRetType macro RC_MAX equ ret_type_id - 1 endm MakeRetDispatchTable macro local ret_type_id ;Create and execute statements of the form: ; ; externDef awSLRetOffset:word ; awSLRetOffset label word cat ,aw,%dir,RetOffset,<:word> cat aw,%dir,RetOffset,< label word> ret_type_id = 0 repeat RC_MAX + 1 ;Create and execute a statement of the form: ; ; % dw offset RC_0 ; ; which when executed produces a statement like: ; ; dw offset RCSL_DEFAULT cat ,%ret_type_id ret_type_id = ret_type_id + 1 endm endm BeginDefRetType DefRetType DEFAULT DefRetType MDIGETACTIVE DefRetType GETWORDBREAKPROC ;DefRetType NEXTMENU EndDefRetType