易语言高表格右键选中行并弹出菜单源码
.版本 2
.支持库 eGrid
窗口组件句柄 = 高级表格.取窗口句柄 () ' 要处理的窗口或组件句柄
原 函 数 地 址 = 设 置 窗 口 信 息 _ ( 窗 口 组 件 句 柄 , -4, 到 整 数 (& 消 息 处 理 )) '
#GWL_WNDPROC =-4
.子程序 消息处理, 整数型, , 新窗口过程(自定义消息处理函数)
.参数 hWnd, 整数型
.参数 Msg, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.局部变量 滚动信息, 滚动条信息
.局部变量 X 坐标, 整数型
.局部变量 Y 坐标, 整数型
.局部变量 鼠标所在行号, 整数型
.局部变量 选择起始行, 整数型
.局部变量 选择终止行, 整数型
.局部变量 页首行行号, 整数型
.局部变量 目标行坐标, 整数型
.局部变量 页首行顶边位置, 整数型
.局部变量 循环变量, 整数型
' /////////////////////////////////////////////////////////////////////////////////////////////
' 高级表格自身响应右键抬起,不响应右键按下,所以仅处理右键抬起
' 每页第一行顶边线总是对齐的,而第一行的顶边位置总是≥nPos,这就为鼠标定位提供了依
据
.如果真 (Msg = #WM_RBUTTONUP)
Y 坐标 = 右移 (lParam, 16) ' 抛弃掉低字节
X 坐标 = 位与 (lParam, 65535) ' 屏蔽掉高字节
滚动信息.cbSize = 28 ' 取滚动条当前位置
滚动信息.fMask = #SIF_ALL
取滚动条信息_ (hWnd, #SB_VERT, 滚动信息)
页首行顶边位置 = 0
.计次循环首 (高级表格.行数 - 1, 循环变量)
页首行顶边位置 = 页首行顶边位置 + 高级表格.取行高 (循环变量 - 1)
.如果真 (页首行顶边位置 ≥ 滚动信息.nPos + 高级表格.取行高 (0))
页首行行号 = 循环变量
跳出循环 ()