这段是源码的,有喜欢收集源码的网友有福了。
源码是改编masm的头文件宏,用于free basic的头宏。这个宏是radasm中的钩子宏。可以在这个编辑器中钩着用。是一门热了二十多年的技术,现在还是滚烫的。
直接贴上来,十分好用。
那free basic的例子差的文件头的radasm的例子都可以补齐的。喜欢的留底,不在别的地方贴,当然有不太全的地方。你帮助我一下?
'' FreeBASIC binding for RADASM '' '' based on the C header files: '' Radasm.bi '' '' Design and implementation by '' - Floris van den Berg (flvdberg@wxs.nl) '' - nantz (nantz@163.com) '' '' Contributors: '' - see changes log named 'Whatsnew.txt', see header of each .h and .cpp file '' '' This file is part of Radasm.bi '' '' COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY '' OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES '' THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE '' OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED '' CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT '' THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY '' SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL '' PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER '' THIS DISCLAIMER. '' '' Use at your own risk! '' '' translated to FreeBASIC by: '' Copyright ? 2023 FreeBASIC development team '包含文件构建RadASM附加文件 #pragma once const RadASM_Version = 2219 #ifdef __FB_WIN32__ extern "Windows" #else extern "C" #endif '汇编 enum nMASM = 1 nTASM = 2 nFASM = 3 nGOASM = 4 nNASM = 5 nHLA = 6 nCPP = 7 nBCET = 8 nFP = 9 nBCC = 10 nMINGW = 11 nLCC = 12 nNVCC = 13 n6502 = 14 nASEMW = 15 nASM8051 = 16 nOTHER = 99 end enum '消息到RadASM的文档框 const AIM_GETHANDLES = WM_USER+50 '返回指针结构列表到所有的用户句柄,看结构区 const AIM_GETPROCS = WM_USER+51 '返回指针结构列表到同一过程,在RadASM内,看结构区 const AIM_GETDATA = WM_USER+52 '返回指针结构列表数据指针,看结构区 const AIM_GETMENUID = WM_USER+53 '返回自由菜单,如果你须要再次一次性发送消息 '从RadASM发送消息到DllProc过程 'EAX的钩子标志 const AIM_COMMAND = WM_COMMAND 'hWnd=多文档句柄, wParam & lParam=WM_COMMAND const AIM_CLOSE = WM_CLOSE 'hWnd=多文档句柄, wParam & lParam=WM_CLOSE const AIM_INITMENUPOPUP = WM_INITMENUPOPUP 'hWnd=多文档句柄, wParam & lParam=WM_INITMENUPOPUP const AIM_MAKEBEGIN = WM_USER+100 'hWnd=多文档句柄, wParam=0 lParam=字符串内容指针命令 const AIM_MAKEDONE = WM_USER+101 'hWnd=多文档句柄, wParam=0 lParam=退出代码 const AIM_COMMANDDONE = WM_USER+102 'hWnd=多文档句柄, wParam & lParam=WM_COMMAND const AIM_PROJECTCLOSE = WM_USER+103 'hWnd=多文档句柄, wParam=0 lParam=0 const AIM_PROJECTCLOSED = WM_USER+104 'hWnd=多文档句柄, wParam=0 lParam=0 const AIM_CLIENTMOUSEMOVE= WM_USER+105 'hWnd=客户端句柄, wParam & lParam=WM_MOUSEMOVE const AIM_TIMER = WM_USER+106 '时间过程 const AIM_CTLDBLCLK = WM_USER+107 'hWnd=多文档框句柄, wParam=控制句柄, lParam=对话框结构指针 const AIM_CREATENEWDLG = WM_USER+108 'hWnd=多文档框句柄, wParam=对话框句柄, lParam=文件名指针 const AIM_CONTEXTMENU = WM_USER+109 'hWnd=多文档句柄, wParam & lParam=WM_CONTEXTMENU const AIM_PROJECTOPENED = WM_USER+110 'hWnd=多文档句柄, wParam=0, lParam=文件名指针 const AIM_MENUREBUILD = WM_USER+111 'hWnd=菜单句柄, wParam=0, lParam=0 const AIM_EDITOPEN = WM_USER+112 'hWnd=多文档框句柄, wParam=编辑句柄, lParam=ID_EDIT或ID_EDITTXT const AIM_EDITCLOSE = WM_USER+113 'hWnd=多文档框句柄, wParam=编辑句柄, lParam=ID_EDIT或ID_EDITTXT const AIM_EDITCLOSED = WM_USER+114 'hWnd=多文档框句柄, wParam=编辑句柄, lParam=ID_EDIT或ID_EDITTXT const AIM_EDITSAVE = WM_USER+115 'hWnd=多文档框句柄, wParam=编辑句柄, lParam=文件名指针 const AIM_EDITSAVED = WM_USER+116 'hWnd=多文档框句柄, wParam=编辑句柄, lParam=文件名指针 const AIM_TBRTOOLTIP = WM_USER+117 'hWnd=多文档句柄, wParam=ID, lParam=0 const AIM_MDIACTIVATE = WM_USER+118 'hWnd=多文档框句柄, wParam & lParam=和WM_MDIACTIVATE相同 const AIM_EDITSELCHANGE = WM_USER+119 'hWnd=多文档框句柄, wParam=编辑句柄, lParam=ID const AIM_PROJECTADDNEW = WM_USER+120 'hWnd=多文档句柄, wParam=type, lParam=文件名指针 const AIM_PROJECTREMOVE = WM_USER+121 'hWnd=多文档句柄, wParam=0, lParam=文件名指针 const AIM_DLGMNUSELECT = WM_USER+122 'hWnd=多文档框句柄, wParam=对话框句柄, lParam=MENUITEM结构指针 const AIM_RCUPDATE = WM_USER+123 'hWnd=对话框句柄,wParam=type,lParam=内存指针 const AIM_CREATENEWCTL = WM_USER+124 'hWnd=多文档框句柄, wParam=对话框句柄, lParam=DIALOG结构指针 const AIM_TOOLSHOW = WM_USER+125 'hWnd=工具句柄,wParam=可视,lParam=ID const AIM_SETSTYLE = WM_USER+126 'hWnd=列表框属性句柄, wParam=DIALOG结构指针. lParam=扩展风格为真 const AIM_OUTPUTDBLCLK = WM_USER+127 'hWnd=输出句柄, wParam & lParam=和WM_LBUTTONDBLCLK相同 const AIM_CODEINFO = WM_USER+128 'hWnd=多文档框句柄, wParam=ID, lParam=单词指针 'ECX的钩子标志 const AIM_MODULEBUILD = WM_USER+129 'hWnd=多文档句柄,wParam=lpFileName(没扩展), lParam=0 const AIM_DIALOGOPEN = WM_USER+130 'hWnd=多文档框句柄,wParam=lpDlgMem, lParam=0 const AIM_DIALOGSAVE = WM_USER+131 'hWnd=多文档框句柄,wParam=hFile, lParam=0 const AIM_UNHOOK = WM_USER+132 'hWnd=无挂窗口句柄,wParam=无挂过程, lParam=上一个过程 const AIM_ADDINSLOADED = WM_USER+133 'hWnd=多文档句柄,wParam=0, lParam=0 const AIM_LANGUAGECHANGE= WM_USER+134 'hWnd=多文档句柄,wParam=0, lParam=0 const AIM_PROJECTOPEN = WM_USER+135 'hWnd=多文档句柄, wParam=0, lParam=文件名指针 const AIM_PROJECTRENAME = WM_USER+136 'hWnd=多文档句柄, wParam=旧文件名指针, lParam=新文件名指针 const AIM_EDITKEYDOWN = WM_USER+137 'hWnd=编辑窗口句柄, wParam和lParam WM_KEYDOWN const AIM_EDITCHAR = WM_USER+138 'hWnd=编辑窗口句柄, wParam和lParam WM_CHAR const AIM_PREPARSE = WM_USER+139 'hWnd=多文档句柄, wParam=工程文件数,lParam=文件内容指针 const AIM_PARSEDONE = WM_USER+140 'hWnd=多文档句柄, wParam=工程文件数,lParam=文件内容指针 const AIM_IMPORTED = WM_USER+141 'hWnd=多文档句柄, wParam=项目文件,lParam=字符串为零,中止文件名 const AIM_RCSAVED = WM_USER+142 'hWnd=多文档句柄, wParam=nType,lParam=字符串为零,中止文件名 const AIM_EDITMOUSEMOVE = WM_USER+143 'hWnd=编辑窗口句柄, wParam和lParam WM_MOUSEMOVE 'EAX的返回值,InstallDll过程跟告诉RadASM跟消息发送到你的DllProc过程,能被OR掉 const RAM_COMMAND = &h00000001 'AIM_COMMAND = WM_COMMAND const RAM_COMMANDDONE = &h00000002 'AIM_COMMANDDONE const RAM_CLOSE = &h00000004 'AIM_CLOSE = WM_CLOSE const RAM_INITMENUPOPUP = &h00000008 'AIM_INITMENUPOPUP = WM_INITMENUPOPUP const RAM_MAKEBEGIN = &h00000010 'AIM_MAKEBEGIN const RAM_MAKEDONE = &h00000020 'AIM_MAKEDONE const RAM_PROJECTCLOSE = &h00000040 'AIM_PROJECTCLOSE const RAM_PROJECTCLOSED = &h00000080 'AIM_PROJECTCLOSED const RAM_CLIENTMOUSEMOVE= &h00000100 'AIM_CLIENTMOUSEMOVE const RAM_TIMER = &h00000200 'AIM_TIMER const RAM_CTLDBLCLK = &h00000400 'AIM_CTLDBLCLK const RAM_CREATENEWDLG = &h00000800 'AIM_CREATENEWDLG const RAM_CONTEXTMENU = &h00001000 'AIM_CONTEXTMENU const RAM_PROJECTOPENED = &h00002000 'AIM_PROJECTOPENED const RAM_MENUREBUILD = &h00004000 'AIM_MENUREBUILD const RAM_EDITOPEN = &h00008000 'AIM_EDITOPEN const RAM_EDITCLOSE = &h00010000 'AIM_EDITCLOSE const RAM_EDITCLOSED = &h00020000 'AIM_EDITCLOSED const RAM_EDITSAVE = &h00040000 'AIM_EDITSAVE const RAM_EDITSAVED = &h00080000 'AIM_EDITSAVED const RAM_TBRTOOLTIP = &h00100000 'AIM_TBRTOOLTIP const RAM_MDIACTIVATE = &h00200000 'AIM_MDIACTIVATE const RAM_EDITSELCHANGE = &h00400000 'AIM_EDITSELCHANGE const RAM_PROJECTADDNEW = &h00800000 'AIM_PROJECTADDNEW const RAM_PROJECTREMOVE = &h01000000 'AIM_PROJECTREMOVE const RAM_DLGMNUSELECT = &h02000000 'AIM_DLGMNUSELECT const RAM_RCUPDATE = &h04000000 'AIM_RCUPDATE const RAM_CREATENEWCTL = &h08000000 'AIM_CREATENEWCTL const RAM_TOOLSHOW = &h10000000 'AIM_TOOLSHOW const RAM_SETSTYLE = &h20000000 'AIM_SETSTYLE const RAM_OUTPUTDBLCLK = &h40000000 'AIM_OUTPUTDBLCLK const RAM_CODEINFO = &h80000000 'AIM_CODEINFO 'ECX存InstallDll返回值,过程告诉RadAS跟消息发送到你的DllProc,能被OR掉。 const RAM_MODULEBUILD = &h00000001 'AIM_MODULEBUILD const RAM_DIALOGOPEN = &h00000002 'AIM_DIALOGOPEN const RAM_DIALOGSAVE = &h00000004 'AIM_DIALOGSAVE const RAM_UNHOOK = &h00000008 'AIM_UNHOOK const RAM_ADDINSLOADED = &h00000010 'AIM_ADDINSLOADED const RAM_LANGUAGECHANGE= &h00000020 'AIM_LANGUAGECHANGE const RAM_PROJECTOPEN = &h00000040 'AIM_PROJECTOPEN const RAM_PROJECTRENAME = &h00000080 'AIM_PROJECTRENAME const RAM_EDITKEYDOWN = &h00000100 'AIM_EDITKEYDOWN const RAM_EDITCHAR = &h00000200 'AIM_EDITCHAR const RAM_PREPARSE = &h00000400 'AIM_PREPARSE const RAM_PARSEDONE = &h00000800 'AIM_PARSEDONE const RAM_IMPORTED = &h00001000 'AIM_IMPORTED const RAM_RCSAVED = &h00002000 'AIM_RCSAVED const RAM_EDITMOUSEMOVE = &h00004000 'AIM_EDITMOUSEMOVE '从AIM_GETHANDLES结构指针里返回 type ADDINHANDLES ''struct hWnd as long '多文档句柄 hMenu as long '多文档菜单句柄 hToolBar as long '多文档工具栏句柄 hStatus as long '多文档状态栏句柄 hClient as long '多文档用户句柄 hMdiCld as long '顶层多文档窗口句柄 hEdit as long '多文档RAEdit窗口句柄 hDialog as long '顶层多文档子对话框窗口句柄 hSearch as long '搜索/替换对话框句柄 hGoTo as long '对话框句柄 hOut as long '静态列表输出句柄 hPbr as long '项目静态列表句柄 hTlb as long 'toolbox 静态列表句柄 hPrp as long '静态列表属性句柄 hPrpCbo as long 'ComboBox属性句柄 hPrpLst as long 'ListBox属性句柄 hPrpTxt as long 'Edit控制属性句柄 hTxtLst as long 'ListBox属性表单句柄 hTxtBtn as long 'Button属性表单句柄 hLB as long 'ListBox应用句柄 (完成代码). 同hLBU或hLBS hTlt as long '静态应用句柄(提示) hInst as long 'RadASM句柄 hToolMenu as long '右击菜单进项目句柄,窗口输出属性 hTab as long '表格窗口句柄 hPbrTrv as long '项目浏览视图句柄 hPrpTbr as long '工具栏属性句柄 hPbrTbr as long '项目句柄 / 文件浏览工具栏 hFileTrv as long '视图文件浏览句柄 hOutREd as long 'RAEdit窗口输出活动句柄 hOut1 as long 'Handle窗口输出#1句柄 hOut2 as long 'RaEdit窗口输出#2句柄 hOut3 as long 'RaEdit窗口输出#3句柄 hOutBtn1 as long '输出按钮#1句柄 hOutBtn2 as long '输出按钮#2句柄 hOutBtn3 as long '输出按钮#3句柄 hDivider as long '溢出行句柄 hSniplet as long '片段对话框句柄 hToolTip as long '工具框提示句柄 hLBU as long '没排序列表框句柄 hLBS as long '排序列表框句柄 hInf as long '静态编辑句柄 hInfEdt as long '信息编辑控制句柄 hTl1 as long 'tool#1 静态列表句柄 hTl2 as long 'tool#2 静态列表句柄 hHexEd as long '顶层多文档RAHexEd窗口句柄 hAccel as long 'RadASM计数器 hTbrIml as long '工具栏图像列表 hTypeIml as long '列表框图像列表 hPrpTxtMulti as long '多行编辑控制属性表句柄 hLBFont as long '应用列表框 hTTFont as long '应用提示 hFont (0 to 3)as long '常规代码编辑,斜体,行号 hFontTxt as long '文本编辑 hFontHex as long '十六进制编辑 hFullScreen as long '满屏编辑弹出编辑句柄 hFound as long '找多文档框句柄 end type '从AIM_GETPROCS结构指针返回 type ADDINPROCS lpTextOut as long '钩子文本输出到窗口指针,在调用前压入文本指针 lpHexOut as long '钩子十六进制输出到窗口指针,用于调试,调用前压值进栈. lpClearOut as long '过程清除输出指针 lpAddProjectFile as long 'lpFileName,fUpdateTree,fModule lpOpenProjectFile as long '获得错误信息--真/假, 设置lpFile打开文件 lpToolMessage as long 'Handle, message, lParam lpGetWordFromPos as long 'RAEdit句柄,单词返回指针 lpProFind as long 'PROFIND的指针结构 lpGetWord as long 'lpWord, 单词返回指针 lpRemoveProjectPath as long 'lpFileName, lpBuff, 文件名返回指针 lpGetMainFile as long 'lpFileExt lpSearchMem as long 'hMem,lpFind,fMCase,fWWord lpProScan as long 'lpFind,lpNot lpBackupEdit as long 'lpFileName,1 lpGetFileType as long 'lpFileName lpOutputSelect as long '输出选择指针(1,2 or 3) lpUpdateCtl as long '控制句柄 lpShowBreakPoint as long '断点号(0-255) lpUpdateVerInf as long '真值扩展到输出, 假值升级rc文件 lpCloseProject as long '没参数 lpOpenProject as long '两个参数:真/假, FALSE=显示打开文件对话框, TRUE=lpFileName设置项目文件 lpExportDialog as long '句柄为多文档,保存rc文件,真/假 lpDllProc as long 'hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM,fHookFun:DWORD lpSetPropertyCbo as long '设置报告 lpAddTab as long 'hMdiChild,lpFileName lpDelTab as long 'hMdiChild lpSelTab as long 'hMdiChild lpUpdateAll as long '命令(IDM_FILE_SAVEALLFILES, IDM_FILE_OPENFILE, IDM_FILE_CLOSEFILE, IDM_OPTION_COLORS, IDM_OPTION_FONT, IDM_OPTION_EDIT, WM_PAINT, IDM_FORMAT_SHOWGRID, FIND_OPEN_FILENAME(51000), IS_FILE_CHANGED(51001)) lpGetFileNameFromID as long 'nProjectFileID lpMenuRebuild as long '没参数 lpUpdateMRU as long '没参数 lpUpdateResource as long '扩展输出为真,更新rc文件为假 lpUpdateStringTable as long '扩展输出为真,更新rc文件为假 lpUpdateAccelerator as long '扩展输出为真,更新rc文件为假 lpGetProjectFiles as long '更新项目视图树,自动打开文件为真 lpToolBarStatus as long '更新状态栏按扭状态 lpUpdateLanguage as long '扩展输出为真,升级rc文件为假 lpGetLangString as long 'lpApp,lpKey,lpStr,nCC lpSetLanguage as long 'hWin,lpApp,fNoResize lpModalDialog as long 'DialogBoxParam lpModelessDialog as long 'CreateDialogParam lpUpdateSizeingRect as long 'hWin, fReadOnly lpSaveEdit as long 'hMdiCld lpSaveDialog as long 'hMdiCld,FALSE lpSaveHexEdit as long 'hMdiCld lpSetTextLink as long 'nType (1-3) lpScanWord as long 'lpWord, lpLine lpAddWordToWordList as long 'nType,nOwner,pWords,nParts lpRefreshProperty as long ' end type '从AIM_GETDATA结构指针返回 type ADDINDATA nRadASMVer as long '版本 fMaximized as long '如果真,顶层菜单弹窗+1 lpIniFile as long 'radasm.ini文件指针 lpProject as long '项目文件指针 lpProjectPath as long '项目路径指针,包含结束符'\' lpFile as long '文件名缓冲区指针 lpApp as long '应用路径指针 lpBin as long '二进制路径指针 lpAddIn as long '附加路径指针 lpHlp as long '帮助路径指针 lpIncl as long '包含路径指针 lpLib as long '库文件路径指针 lpPro as long '项目路径指针 lpSnp as long '段落路径指针 lpTpl as long '模板路径指针 lpMac as long '键盘宏路径指针 lpIniAsmFile as long 'masm/fasm/tasm的ini文件指针 fProject as long '如果真,读入一个项目 lpLoadPath as long '当RadAsm路径被读入指针 lpCtlTypes as long '(对话编辑)TYPES结构指针 fResChanged as long '如果真过去编译的资源改变 lpBreakPoint as long '256个断点结构指针 fResProject as long '如果真,项目有资源文件 lpBreakPointVar as long '断点值指针 AsmFlag as long '如果真,输出窗口打开文件 lpCharTab as long 'RAEdit的字符表指针 szAssembler (0 to 16)as byte '汇编文本 lpPrpCboItems as long '通用指定字符列表属性到通常表项 fEditMax as long '打开多文档最大化为真 lpProjectFiles as long '指针到内存块项目列表文件 hWordList as long '单词列表的内存的结构 lpWordList as long '单词列表的内存指针 rpProjectWordList as long '接收单词列表指针,项目代码指针属性 rpWordListPos as long '接收单词列表指针,自由指针 lpAddins as long '附加结构指针 rpStructList as long '接收单词列表指针指针的结构 lpszAppName as long '应用程序名字串指针 lpDbg as long '调试路径的指针 lpCurPro as long '当前项目路径指针 lpszAclKeys as long '加速器定义指针 UserBtnID as long '第一个用户按钮ID指针 nAsm as long '当前汇编(nMASM, nTASM....) fNT as long 'NT系统为真 lpRABlockdef as long '块定义指针 TabSize as long '空格,制表,数字符 ShowApiList as long '如果真,RadASM显示列表框应用过程 ShowApiStruct as long '如果真,RadASM将显示列表框结构表项 ShowApiToolTip as long '如果真,RadASM将显示工具提示在应用过程 fLB as long 'RadASM演示列表框 fTlt as long 'RadASM演示工具提示 lpSRCFilterString as long '源码填充字符串指针 lpDefSrcExt as long '源码定义扩展指针 lpHDRFilterString as long '填充源扩展指针 lpDefHdrExt as long '定义源扩展指针 lpMODFilterString as long '模块填充字符串 lpDefModExt as long '定义模块扩展 end type '增加选项 type ADDINOPT lpStr as long '描述字符串指针 nAnd as long 'AND值 nOr as long 'OR值 end type '获得钩子宏返回值 '(当钩子)32时宏需要扩展) dim V as long type AddInHook ' V as long = 0 ' hk as long ptr ' if AIM_COMMAND then V = V + RAM_COMMAND ' elseif AIM_COMMANDDONE V = V + RAM_COMMANDDONE ' elseif AIM_CLOSE V = V + RAM_CLOSE ' elseif AIM_INITMENUPOPUP V = V + RAM_INITMENUPOPUP ' elseif AIM_MAKEBEGIN V = V + RAM_MAKEBEGIN ' elseif AIM_MAKEDONE V = V + RAM_MAKEDONE ' elseif AIM_PROJECTCLOSE V = V + RAM_PROJECTCLOSE ' elseif AIM_PROJECTCLOSED V = V + RAM_PROJECTCLOSED ' elseif AIM_CLIENTMOUSEMOVE V = V + RAM_CLIENTMOUSEMOVE ' elseif AIM_TIMER V = V + RAM_TIMER ' elseif AIM_CTLDBLCLK V = V ^ RAM_CTLDBLCLK ' elseif AIM_CREATENEWDLG V = V ^ RAM_CREATENEWDLG ' elseif AIM_CONTEXTMENU V = V ^ RAM_CONTEXTMENU ' elseif AIM_PROJECTOPENED V = V ^ RAM_PROJECTOPENED ' elseif AIM_MENUREBUILD V = V ^ RAM_MENUREBUILD ' elseif AIM_EDITOPEN V = V ^ RAM_EDITOPEN ' elseif AIM_EDITCLOSE V = V ^ RAM_EDITCLOSE ' elseif AIM_EDITCLOSED V = V ^ RAM_EDITCLOSED ' elseif AIM_EDITSAVE V = V ^ RAM_EDITSAVE ' elseif AIM_EDITSAVED V = V ^ RAM_EDITSAVED ' elseif AIM_TBRTOOLTIP V = V ^ RAM_TBRTOOLTIP ' elseif AIM_MDIACTIVATE V = V ^ RAM_MDIACTIVATE ' elseif AIM_EDITSELCHANGE V = V ^ RAM_EDITSELCHANGE ' elseif AIM_PROJECTADDNEW V = V ^ RAM_PROJECTADDNEW ' elseif AIM_PROJECTREMOVE V = V ^ RAM_PROJECTREMOVE ' elseif AIM_DLGMNUSELECT V = V ^ RAM_DLGMNUSELECT ' elseif AIM_RCUPDATE V = V ^ RAM_RCUPDATE ' elseif AIM_CREATENEWCTL V = V ^ RAM_CREATENEWCTL ' elseif AIM_TOOLSHOW V = V ^ RAM_TOOLSHOW ' elseif AIM_SETSTYLE V = V ^ RAM_SETSTYLE ' elseif AIM_OUTPUTDBLCLK V = V ^ RAM_OUTPUTDBLCLK ' elseif AIM_CODEINFO V = V ^ RAM_CODEINFO ' else V ' endif end type end extern
RADbg.bi
'' Use with version 1.0.0.2 or 1.0.0.3 of RADbg.dll type RADBG _err as long _edi as long _esi as long _ebp as long _esp as long _ebx as long _edx as long _ecx as long _eax as long _efl as long _eip as long _var as long nid as long end type function RADbg (rabpid as long,rahwnd as long,ravar as long) as integer asm push [rahwnd] push [rabpid] push [ravar] call RADebug end asm end function asm RADebug: pushfd pushad push eax mov ebx,RADBG push esp push RADBG push 0 call GetLastError push ebx push WM_COPYDATA push -1 PUSH esp call SendMessage test eax,eax jz @ push 0 call ExitProcess @: pop eax popad popfd ret end asm
RAEdit.bi
'默认颜色 const BCKCLR = &h00C0F0F0 const TXTCLR = &h00000000 const SELBCKCLR = &h00800000 const SELTXTCLR = &h00FFFFFF const CMNTCLR = &h02008000 const STRCLR = &h00A00000 const OPRCLR = &h000000A0 const HILITE1 = &h00F0C0C0 const HILITE2 = &h00C0F0C0 const HILITE3 = &h00C0C0F0 const SELBARCLR = &h00C0C0C0 const SELBARPEN = &h00808080 const LNRCLR = &h00800000 const NUMCLR = &h00808080 const CMNTBCK = &h00C0F0F0 const STRBCK = &h00C0F0F0 const NUMBCK = &h00C0F0F0 const OPRBCK = &h00C0F0F0 const CHANGEDCLR = &h0000F0F0 const CHANGESAVEDCLR = &h0000F000 '窗口风格 const STYLE_NOSPLITT = &h0001 '没指定按钮 const STYLE_NOLINENUMBER= &h0002 '没行号按钮 const STYLE_NOCOLLAPSE = &h0004 '没扩展/失败按钮 const STYLE_NOHSCROLL = &h0008 '没行卷轴板 const STYLE_NOVSCROLL = &h0010 '没列卷轴板 const STYLE_NOHILITE = &h0020 '没颜色板 const STYLE_NOSIZEGRIP = &h0040 '没大小网格 const STYLE_NODBLCLICK = &h0080 '没活动双击 const STYLE_READONLY = &h0100 '文本锁定 const STYLE_NODIVIDERLINE= &h0200 '行内块没溢出 const STYLE_NOBACKBUFFER= &h0400 '画屏DC const STYLE_NOSTATE = &h0800 '没状态栏 const STYLE_DRAGDROP = &h1000 '降下 & 落下支持,应用必须读出 const STYLE_SCROLLTIP = &h2000 '卷轴板提示 const STYLE_HILITECOMMENT= &h4000 '注释板 const STYLE_AUTOSIZELINENUM= &h8000 '行号和行列大小 '使用REM_SETSTYLEEX风格消息 const STYLEEX_LOCK = &h0001 '显示锁定按钮 const STYLEEX_BLOCKGUIDE = &h0002 '显示块导航 const STILEEX_LINECHANGED = &h0004 '显示行改变状态 const STILEEX_STRINGMODEFB = &h0008 'FreeBasic const STILEEX_STRINGMODEC = &h0010 'C/C++ '编辑模式 enum MODE_NORMAL = 0 '正常 MODE_BLOCK = 1 '块选择 MODE_OVERWRITE = 2 '覆写 end enum 'REM_COMMAND命令 enum CMD_LEFT = 1 CMD_RIGHT = 2 CMD_LINE_UP = 3 CMD_LINE_DOWN = 4 CMD_PAGE_UP = 5 CMD_PAGE_DOWN = 6 CMD_HOME = 7 CMD_END = 8 CMD_INSERT = 9 CMD_DELETE = 10 CMD_BACKSPACE = 11 end enum 'REM_COMMAND修改 const CMD_ALT = 256 const CMD_CTRL = 512 const CMD_SHIFT = 1024 '私有编辑消息 const REM_RAINIT = WM_USER+9999 'wParam=0, lParam=控制对话框结构的指针 const REM_BASE = WM_USER+1000 const REM_SETHILITEWORDS = REM_BASE+0 'wParam=Color, lParam=lpszWords const REM_SETFONT = REM_BASE+1 'wParam=nLineSpacing, lParam=lpRAFONT const REM_GETFONT = REM_BASE+2 'wParam=0, lParam=lpRAFONT const REM_SETCOLOR = REM_BASE+3 'wParam=0, lParam=lpRACOLOR const REM_GETCOLOR = REM_BASE+4 'wParam=0, lParam=lpRACOLOR const REM_SETHILITELINE = REM_BASE+5 'wParam=Line, lParam=Color const REM_GETHILITELINE = REM_BASE+6 'wParam=Line, lParam=0 const REM_SETBOOKMARK = REM_BASE+7 'wParam=Line, lParam=Type const REM_GETBOOKMARK = REM_BASE+8 'wParam=Line, lParam=0 const REM_CLRBOOKMARKS = REM_BASE+9 'wParam=0, lParam=Type const REM_NXTBOOKMARK = REM_BASE+10 'wParam=Line, lParam=Type const REM_PRVBOOKMARK = REM_BASE+11 'wParam=Line, lParam=Type const REM_FINDBOOKMARK = REM_BASE+12 'wParam=BmID, lParam=0 const REM_SETBLOCKS = REM_BASE+13 'wParam=[lpLINERANGE], lParam=0 const REM_ISLINE = REM_BASE+14 'wParam=Line, lParam=lpszDef const REM_GETWORD = REM_BASE+15 'wParam=BuffSize, lParam=lpBuff const REM_COLLAPSE = REM_BASE+16 'wParam=Line, lParam=0 const REM_COLLAPSEALL = REM_BASE+17 'wParam=0, lParam=0 const REM_EXPAND = REM_BASE+18 'wParam=Line, lParam=0 const REM_EXPANDALL = REM_BASE+19 'wParam=0, lParam=0 const REM_LOCKLINE = REM_BASE+20 'wParam=Line, lParam=TRUE/FALSE const REM_ISLINELOCKED = REM_BASE+21 'wParam=Line, lParam=0 const REM_HIDELINE = REM_BASE+22 'wParam=Line, lParam=TRUE/FALSE const REM_ISLINEHIDDEN = REM_BASE+23 'wParam=Line, lParam=0 const REM_AUTOINDENT = REM_BASE+24 'wParam=0, lParam=TRUE/FALSE const REM_TABWIDTH = REM_BASE+25 'wParam=nChars, lParam=TRUE/FALSE (扩展表格) const REM_SELBARWIDTH = REM_BASE+26 'wParam=nWidth, lParam=0 const REM_LINENUMBERWIDTH = REM_BASE+27 'wParam=nWidth, lParam=0 const REM_MOUSEWHEEL = REM_BASE+28 'wParam=nLines, lParam=0 const REM_SUBCLASS = REM_BASE+29 'wParam=0, lParam=lpWndProc const REM_SETSPLIT = REM_BASE+30 'wParam=nSplit, lParam=0 const REM_GETSPLIT = REM_BASE+31 'wParam=0, lParam=0 const REM_VCENTER = REM_BASE+32 'wParam=0, lParam=0 const REM_REPAINT = REM_BASE+33 'wParam=0, lParam=TRUE/FALSE (当前画笔) const REM_BMCALLBACK = REM_BASE+34 'wParam=0, lParam=lpBmProc const REM_READONLY = REM_BASE+35 'wParam=0, lParam=TRUE/FALSE const REM_INVALIDATELINE = REM_BASE+36 'wParam=Line, lParam=0 const REM_SETPAGESIZE = REM_BASE+37 'wParam=nLines, lParam=0 const REM_GETPAGESIZE = REM_BASE+38 'wParam=0, lParam=0 const REM_GETCHARTAB = REM_BASE+39 'wParam=nChar, lParam=0 const REM_SETCHARTAB = REM_BASE+40 'wParam=nChar, lParam=nValue const REM_SETCOMMENTBLOCKS = REM_BASE+41 'wParam=lpStart, lParam=lpEnd const REM_SETWORDGROUP = REM_BASE+42 'wParam=0, lParam=nGroup (0-15) const REM_GETWORDGROUP = REM_BASE+43 'wParam=0, lParam=0 const REM_SETBMID = REM_BASE+44 'wParam=nLine, lParam=nBmID const REM_GETBMID = REM_BASE+45 'wParam=nLine, lParam=0 const REM_ISCHARPOS = REM_BASE+46 'wParam=CP, lParam=0, 返回 1 注释块, 2 如果注释, 3 如果字符串 const REM_HIDELINES = REM_BASE+47 'wParam=nLine, lParam=nLines const REM_SETDIVIDERLINE = REM_BASE+48 'wParam=nLine, lParam=TRUE/FALSE const REM_ISINBLOCK = REM_BASE+49 'wParam=nLine, lParam=lpRABLOCKDEF const REM_TRIMSPACE = REM_BASE+50 'wParam=nLine, lParam=fLeft const REM_SAVESEL = REM_BASE+51 'wParam=0, lParam=0 const REM_RESTORESEL = REM_BASE+52 'wParam=0, lParam=0 const REM_GETCURSORWORD = REM_BASE+53 'wParam=BuffSize, lParam=lpBuff, 返回行号 const REM_SETSEGMENTBLOCK = REM_BASE+54 'wParam=nLine, lParam=TRUE/FALSE const REM_GETMODE = REM_BASE+55 'wParam=0, lParam=0 const REM_SETMODE = REM_BASE+56 'wParam=nMode, lParam=0 const REM_GETBLOCK = REM_BASE+57 'wParam=0, lParam=lpBLOCKRANGE const REM_SETBLOCK = REM_BASE+58 'wParam=0, lParam=lpBLOCKRANGE const REM_BLOCKINSERT = REM_BASE+59 'wParam=0, lParam=lpText const REM_LOCKUNDOID = REM_BASE+60 'wParam=TRUE/FALSE, lParam=0 const REM_ADDBLOCKDEF = REM_BASE+61 'wParam=0, lParam=lpRABLOCKDEF const REM_CONVERT = REM_BASE+62 'wParam=nType, lParam=0 const REM_BRACKETMATCH = REM_BASE+63 'wParam=0, lParam=lpDef {[(,}]),_ const REM_COMMAND = REM_BASE+64 'wParam=nCommand, lParam=0 const REM_CASEWORD = REM_BASE+65 'wParam=cp, lParam=lpWord const REM_GETBLOCKEND = REM_BASE+66 'wParam=Line, lParam=0 const REM_SETLOCK = REM_BASE+67 'wParam=TRUE/FALSE, lParam=0 const REM_GETLOCK = REM_BASE+68 'wParam=0, lParam=0 const REM_GETWORDFROMPOS = REM_BASE+69 'wParam=cp, lParam=lpBuff const REM_SETNOBLOCKLINE = REM_BASE+70 'wParam=Line, lParam=TRUE/FALSE const REM_ISLINENOBLOCK = REM_BASE+71 'wParam=Line, lParam=0 const REM_SETALTHILITELINE = REM_BASE+72 'wParam=Line, lParam=TRUE/FALSE const REM_ISLINEALTHILITE = REM_BASE+73 'wParam=Line, lParam=0 const REM_SETCURSORWORDTYPE = REM_BASE+74 'wParam=nType, lParam=0 const REM_SETBREAKPOINT = REM_BASE+75 'wParam=nLine, lParam=TRUE/FALSE const REM_NEXTBREAKPOINT = REM_BASE+76 'wParam=nLine, lParam=0 const REM_GETLINESTATE = REM_BASE+77 'wParam=nLine, lParam=0 const REM_SETERROR = REM_BASE+78 'wParam=nLine, lParam=nErrID const REM_GETERROR = REM_BASE+79 'wParam=nLine, lParam=0 const REM_NEXTERROR = REM_BASE+80 'wParam=nLine, lParam=0 const REM_CHARTABINIT = REM_BASE+81 'wParam=0, lParam=0 const REM_LINEREDTEXT = REM_BASE+82 'wParam=nLine, lParam=TRUE/FALSE const REM_SETSTYLEEX = REM_BASE+83 'wParam=nStyleEx, lParam=0 const REM_GETUNICODE = REM_BASE+84 'wParam=0, lParam=0 const REM_SETUNICODE = REM_BASE+85 'wParam=TRUE/FALSE, lParam=0 const REM_SETCHANGEDSTATE = REM_BASE+86 'wParam=TRUE/FALSE, lParam=0 const REM_SETTOOLTIP = REM_BASE+87 'wParam=n (1-6), lParam=lpText const REM_HILITEACTIVELINE = REM_BASE+88 'wParam=0, lParam=nColor '覆盖类型 enum CONVERT_TABTOSPACE = 0 CONVERT_SPACETOTAB = 1 CONVERT_UPPERCASE = 2 CONVERT_LOWERCASE = 3 end enum '行号板 enum STATE_HILITEOFF = 0 STATE_HILITE1 = 1 STATE_HILITE2 = 2 STATE_HILITE3 = 3 STATE_HILITEMASK = 3 end enum '标签 const STATE_BMOFF = &h00 const STATE_BM1 = &h10 const STATE_BM2 = &h20 const STATE_BM3 = &h30 const STATE_BM4 = &h40 const STATE_BM5 = &h50 const STATE_BM6 = &h60 const STATE_BM7 = &h70 const STATE_BM8 = &h80 const STATE_BMMASK = &h0F0 '行状态 const STATE_LOCKED = &h00000100 const STATE_HIDDEN = &h00000200 const STATE_COMMENT = &h00000400 const STATE_DIVIDERLINE = &h00000800 const STATE_SEGMENTBLOCK= &h00001000 const STATE_NOBLOCK = &h00002000 const STATE_ALTHILITE = &h00004000 const STATE_BREAKPOINT = &h00008000 const STATE_BLOCKSTART = &h00010000 const STATE_BLOCK = &h00020000 const STATE_BLOCKEND = &h00040000 const STATE_REDTEXT = &h00080000 const STATE_COMMENTNEST = &h00100000 const STATE_CHANGED = &h00200000 const STATE_CHANGESAVED = &h00400000 const STATE_GARBAGE = &h80000000 '字符表格类型 enum CT_NONE = 0 CT_CHAR = 1 CT_OPER = 2 CT_HICHAR = 3 CT_CMNTCHAR = 4 CT_STRING = 5 CT_CMNTDBLCHAR = 6 CT_CMNTINITCHAR = 7 end enum '寻找 const FR_IGNOREWHITESPACE= &h8000000 type RAFONT hFont as long '代码常规编辑 hIFont as long '代码编辑斜体 hLnrFont as long '行号 end type type RACOLOR bckcol as long '背景色 txtcol as long '文本色 selbckcol as long '设置背景色 seltxtcol as long '设置背景色 cmntcol as long '注释颜色 strcol as long '字符串颜色 oprcol as long '操作符颜色 hicol1 as long '行板 1 hicol2 as long '行板 2 hicol3 as long '行板 3 selbarbck as long '选择板 selbarpen as long '选择板笔 lnrcol as long '行号颜色 numcol as long '数字&十六进制颜色 cmntback as long '注释背景颜色 strback as long '字符串背景色 numback as long '数字&十六进制背景颜色 oprback as long '操作符背景颜色 changed as long '行改变 changesaved as long '行保存改变 end type type RASELCHANGE nmhdr as NMHDR chrg as CHARRANGE '当前选择 seltyp as long 'SEL_TEXT 或 SEL_OBJECT line as long '行号 cpLine as long '首字符发送 lpLine as long '行指针 nlines as long '行总数 nhidden as long '隐藏行总数 fchanged as long '过去改变为TRUE npage as long '页数 nWordGroup as long '板块单词组(0-15) end type const BD_NONESTING = &h01 '设置嵌套块为真 const BD_DIVIDERLINE = &h02 '画一个分隔行 const BD_INCLUDELAST = &h04 'lpszEnd行也折叠 const BD_LOOKAHEAD = &h08 '从头到尾看500行 const BD_SEGMENTBLOCK = &h10 '折叠到下一段落块 const BD_COMMENTBLOCK = &h20 '注释块 const BD_NOBLOCK = &h40 ' const BD_ALTHILITE = &h80 '符号颜色加1到当前单词组 type RABLOCKDEF lpszStart as long '开始块 lpszEnd as long '结束块 lpszNot1 as long '不隐藏行,包含或设为NULL lpszNot2 as long '不隐藏行,包含或设为NULL flag as long '高亮单词组(0-15) end type type LINERANGE lnMin as long '开始行 lnMax as long '结束行 end type type BLOCKRANGE lnMin as long '开始行 clMin as long '开始列 lnMax as long '结束行 clMax as long '结束列 end type const szRAEditClass as string ="RAEdit" const szEditClassName as string ="RAEditChild"
RAGrid.bi
#pragma once declare function GridInstall(as long,as long) as long '' Column structure type COLUMN colwt as long 'Column width. lpszhdrtext as long 'Pointer to header text. halign as long 'Header text alignment. calign as long 'Column text alignment. ctype as long 'Column data type. ctextmax as long 'Max text lenght for TYPE_EDITTEXT and TYPE_EDITLONG. lpszformat as long 'Format string for TYPE_EDITLONG. himl as long 'Handle of image list. For the image columns and combobox only. hdrflag as long 'Header flags. Set to ZERO or if initially sorted set to initial sort direction colxp as long 'Column position. Internally used. edthwnd as long 'Column control handle. Internally used. lParam as long 'User defined 32 bit value. end type type ROWCOLOR backcolor as long textcolor as long end type 'Notifications type GRIDNOTIFY nmhdr as NMHDR col as long 'Column row as long 'Row hwnd as long 'Handle of column edit control lpdata as long 'Pointer to data fcancel as long 'Set to TRUE to cancel operation end type const GN_HEADERCLICK = 1 'User clicked header const GN_BUTTONCLICK = 2 'Sendt when user clicks the button in a button cell const GN_CHECKCLICK = 3 'Sendt when user double clicks the checkbox in a checkbox cell const GN_IMAGECLICK = 4 'Sendt when user double clicks the image in an image cell const GN_BEFORESELCHANGE= 5 'Sendt when user r=est a selection change const GN_AFTERSELCHANGE = 6 'Sendt after a selection change const GN_BEFOREEDIT = 7 'Sendt before the cell edit control shows const GN_AFTEREDIT = 8 'Sendt when the cell edit control is about to close const GN_BEFOREUPDATE = 9 'Sendt before a cell updates grid data const GN_AFTERUPDATE = 10 'Sendt after grid data has been updated const GN_USERCONVERT = 11 'Sendt when user cell needs to be converted. const GN_EDITCHANGE = 12 'Sendt when user types text in the edit control. '' Messages const GM_ADDCOL = WM_USER+1 'wParam=0, lParam=lpCOLUMN const GM_ADDROW = WM_USER+2 'wParam=0, lParam=lpROWDATA (can be NULL) const GM_INSROW = WM_USER+3 'wParam=nRow, lParam=lpROWDATA (can be NULL) const GM_DELROW = WM_USER+4 'wParam=nRow, lParam=0 const GM_MOVEROW = WM_USER+5 'wParam=nFromRow, lParam=nToRow const GM_COMBOADDSTRING = WM_USER+6 'wParam=nCol, lParam=lpszString const GM_COMBOCLEAR = WM_USER+7 'wParam=nCol, lParam=0 const GM_GETCURSEL = WM_USER+8 'wParam=0, lParam=0 const GM_SETCURSEL = WM_USER+9 'wParam=nCol, lParam=nRow const GM_GETCURCOL = WM_USER+10 'wParam=0, lParam=0 const GM_SETCURCOL = WM_USER+11 'wParam=nCol, lParam=0 const GM_GETCURROW = WM_USER+12 'wParam=0, lParam=0 const GM_SETCURROW = WM_USER+13 'wParam=nRow, lParam=0 const GM_GETCOLCOUNT = WM_USER+14 'wParam=0, lParam=0 const GM_GETROWCOUNT = WM_USER+15 'wParam=0, lParam=0 const GM_GETCELLDATA = WM_USER+16 'wParam=nRowCol, lParam=lpData const GM_SETCELLDATA = WM_USER+17 'wParam=nRowCol, lParam=lpData (can be NULL) const GM_GETCELLRECT = WM_USER+18 'wParam=nRowCol, lParam=lpRECT const GM_SCROLLCELL = WM_USER+19 'wParam=0, lParam=0 const GM_GETBACKCOLOR = WM_USER+20 'wParam=0, lParam=0 const GM_SETBACKCOLOR = WM_USER+21 'wParam=nColor, lParam=0 const GM_GETGRIDCOLOR = WM_USER+22 'wParam=0, lParam=0 const GM_SETGRIDCOLOR = WM_USER+23 'wParam=nColor, lParam=0 const GM_GETTEXTCOLOR = WM_USER+24 'wParam=0, lParam=0 const GM_SETTEXTCOLOR = WM_USER+25 'wParam=nColor, lParam=0 const GM_ENTEREDIT = WM_USER+26 'wParam=nCol, lParam=nRow const GM_ENDEDIT = WM_USER+27 'wParam=nRowCol, lParam=fCancel const GM_GETCOLWIDTH = WM_USER+28 'wParam=nCol, lParam=0 const GM_SETCOLWIDTH = WM_USER+29 'wParam=nCol, lParam=nWidth const GM_GETHDRHEIGHT = WM_USER+30 'wParam=0, lParam=0 const GM_SETHDRHEIGHT = WM_USER+31 'wParam=0, lParam=nHeight const GM_GETROWHEIGHT = WM_USER+32 'wParam=0, lParam=0 const GM_SETROWHEIGHT = WM_USER+33 'wParam=0, lParam=nHeight const GM_RESETCONTENT = WM_USER+34 'wParam=0, lParam=0 const GM_COLUMNSORT = WM_USER+35 'wParam=nCol, lParam=0=Ascending, 1=Descending, 2=Invert const GM_GETHDRTEXT = WM_USER+36 'wParam=nCol, lParam=lpBuffer const GM_SETHDRTEXT = WM_USER+37 'wParam=nCol, lParam=lpszText const GM_GETCOLFORMAT = WM_USER+38 'wParam=nCol, lParam=lpBuffer const GM_SETCOLFORMAT = WM_USER+39 'wParam=nCol, lParam=lpszText const GM_CELLCONVERT = WM_USER+40 'wParam=nRowCol, lParam=lpBuffer const GM_RESETCOLUMNS = WM_USER+41 'wParam=0, lParam=0 const GM_GETROWCOLOR = WM_USER+42 'wParam=nRow, lParam=lpROWCOLOR const GM_SETROWCOLOR = WM_USER+43 'wParam=nRow, lParam=lpROWCOLOR const GM_GETCOLDATA = WM_USER+44 'wParam=nCol, lParam=lpCOLUMN const GM_COMBOFINDSTRING= WM_USER+45 'wParam=nCol, lParam=lpszString 'Column alignment enum GA_ALIGN_LEFT = 0 GA_ALIGN_CENTER = 1 GA_ALIGN_RIGHT = 2 end enum 'Column types enum TYPE_EDITTEXT = 0 'String TYPE_EDITLONG = 1 'Long TYPE_CHECKBOX = 2 'Long TYPE_COMBOBOX = 3 'Long TYPE_HOTKEY = 4 'Long TYPE_BUTTON = 5 'String TYPE_IMAGE = 6 'Long TYPE_DATE = 7 'Long TYPE_TIME = 8 'Long TYPE_USER = 9 '0=String, 1 to 512 bytes binary data TYPE_EDITBUTTON = 10 'String TYPE_EDITCOMBOBOX = 11 'String end enum 'Column sorting enum SORT_ASCENDING = 0 SORT_DESCENDING = 1 SORT_INVERT = 2 end enum 'Window styles enum STYLE_NOSEL = &h01 STYLE_NOFOCUS = &h02 STYLE_HGRIDLINES = &h04 STYLE_VGRIDLINES = &h08 STYLE_GRIDFRAME = &h10 STYLE_NOCOLSIZE = &h20 ODT_GRID = 6 end enum const szRAGridClass as string = "RAGrid"
RAVideo.bi
#pragma once extern "C" ' declare function CreateClass() as integer 'Styles const STYLE_PLAYBAR = 1 const STYLE_KEEPASPECT = 2 'Messages const RAVID_PLAY = WM_USER+0 'wParam=0, lParam=lpFileName const RAVID_STOP = WM_USER+1 'wParam=0, lParam=0 const szClassName = "RAVIDEO" end extern