这段是源码的,有喜欢收集源码的网友有福了。

Peirre11个月前我的程序270

源码是改编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


相关文章

多普勒音速偏移演示计算器。

多普勒音速偏移演示计算器。

多普勒偏移计算器,应用与雷达测距计算。链接:https://pan.baidu.com/s/1i4FkchZ  密码: mq7x...

Radasm 编辑器配置VC2010下的Opencv 环境。

Radasm 编辑器配置VC2010下的Opencv 环境。

Opencv 下载地址:https://opencv.org/releases.html备用下载地址1:https://blog.csdn.net/yanzi1225627/article/detai...

几种在linux中的调试器的编译结果。

几种在linux中的调试器的编译结果。

很多人用源码进行编译,会不成功,原因有很多,我现在讲讲linux 下必有的gdb调试器来说明一下。我用的linux 系统 是 优麒麟 19.04.10.1 加强版,属于试用版。随系统自带的gdb是8....

关于DOSBOX的简单说明。

关于DOSBOX的简单说明。

linux 下的共享软件DOSBOX 在有些版本的linux 中不能使用鼠标。网上说明要换声卡地址和中断,连接鼠标端口才可以使用。 曾经设置过,可以使用参数不记得。有个解决方法。这是软件问题。 先卸载...

linux 下的《仙剑奇侠传》

linux 下的《仙剑奇侠传》

以前的DOS游戏《仙剑奇侠传》是炙制人口的一个很容易上手的游戏。这个游戏流行了很多年。很多人在玩过多年以后,重温旧梦,回味游戏之中的情感。这个游戏再版了很多次了。现在linux 下也可以直接玩这个游戏...

USB设备的插入机制与USB驱动故障。

USB设备的插入机制与USB驱动故障。

USB主机检测设备,首先在USB集线器的每个端口的D+,D-上,分别接了一个15K欧姆的下拉电阻到地。集线器端口为空时,被这两个电阻拉低了电平。在USB设备端,D+或者D- 上接了上拉1.5K电阻。全...