易语言实现分割按钮

易语言 2020-08-16 21:41:13

易语言实现分割按钮

.子程序 窗口_取控件坐标, POINT, 公开, 取指定窗口(左上角\顶点)在屏幕中的位置
.参数 窗口句柄, 整数型, 可空, 可空:则取当前窗口句柄的位置
.局部变量 坐标变量, POINT

.如果真 (窗口句柄 = 0)
窗口句柄 = GetFocus ()
.如果真结束
坐标变量.x = 0
坐标变量.y = 0
ClientToScreen (窗口句柄, 坐标变量)
返回 (坐标变量)

SetWindowLongA (按钮1.取窗口句柄 (), #GWL_STYLE, 位或 (窗口_取样式 (按钮1.取窗口句柄 ()), #BS_SPLITBUTTON))
oldWNDPROC = SetWindowLongA (取窗口句柄 (), #GWL_WNDPROC, 到整数 (&按钮消息))

.子程序 按钮消息
.参数 hWnd, 整数型
.参数 uMsg, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.局部变量 hMenu, 整数型
.局部变量 POINT, POINT

' 调试输出 (uMsg)
.如果真 (uMsg = #WM_NOTIFY)
.如果真 (指针到整数 (lParam + 8) = #BCN_DROPDOWN 且 指针到整数 (lParam) = 按钮1.取窗口句柄 ()) ' 这其实是个结构体,但是老子不想写了
POINT = 窗口_取控件坐标 (按钮1.取窗口句柄 ())
按钮1.弹出菜单 (Test, POINT.x, POINT.y + 按钮1.高度)
.如果真结束

.如果真结束
CallWindowProcA (oldWNDPROC, hWnd, uMsg, wParam, lParam)