十万个为什么 发表于 2020-3-11 12:02:12

易语言编辑框屏蔽鼠标右键的两种方法

易语言的编辑框默认是可以点击鼠标右键弹出菜单的
如下图所示,右键可以复制粘贴剪切编辑框内容


有时候我们做的软件.并不希望用户可以点击鼠标右键复制粘贴编辑框的内容.
那么怎么屏蔽易语言编辑框的鼠标右键呢?

1.用代码实现
源码如下.
.版本 2

.程序集 窗口程序集_窗口1
.程序集变量 c_eidt, edit, , "0"

.子程序 拦截编辑框右键
.参数 编辑框句柄, 整数型
.局部变量 eidt, edit

eidt.hwnd = 编辑框句柄
eidt.lpPrevWndProc = SetWindowLong (eidt.hwnd, -4, &WindowProc)
加入成员 (c_eidt, eidt)

.子程序 WindowProc, 整数型
.参数 hw
.参数 uMsg
.参数 wParam
.参数 lParam

.如果真 (uMsg = 123)' 或 uMsg = 769)' 是否为WM_CONTEXTMENU或复制消息
    弹出菜单 (菜单, , )
    返回 (0)' 拦截
.如果真结束
返回 (CallWindowProc (Get_lpPrevWndProc (hw), hw, uMsg, wParam, lParam))

.子程序 Get_lpPrevWndProc, 整数型
.参数 hwnd, 整数型
.局部变量 i, 整数型

.计次循环首 (取数组成员数 (c_eidt), i)
    .如果真 (c_eidt .hwnd = hwnd)
      返回 (c_eidt .lpPrevWndProc)
    .如果真结束

.计次循环尾 ()
返回 (0)

.子程序 _窗口1_创建完毕

拦截编辑框右键 (编辑框1.取窗口句柄 ())



2.曲线解决法:换成超级编辑框
写下如下代码.就会弹出你的自定义菜单了.


.版本 2
.子程序 _超级编辑框1_鼠标右键被放开, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
超级编辑框1.弹出菜单 (菜单, , )
返回 (假)


yyz860723 发表于 2021-5-28 23:16:57

楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!
页: [1]
查看完整版本: 易语言编辑框屏蔽鼠标右键的两种方法