aardio富文本框richedit响应鼠标中键向上滚动向下滚动的win消息_计算机编程入门教程

Admin Admin
发布:2018-04-30 10:57:21 分类:心得经验
因为win系统自带的滚动条太丑陋了,所以不想显示它,用鼠标中键滚动.
用static或图片模拟滚动条还没搞出来,涉及到滚动条长短和拖动距离滚动多少的问题,有难度.
在这个过程当中,掌握了一个比较重要的技巧:
用console输出消息中的各种参数,对比分析哪些是变的哪些是不变的,对比下十进制与十六进制数值,就知道哪些参数是有用的了.

如:  console.log("鼠标滚轮滚动",hwnd,message,wParam,lParam)

import win.ui;
/*DSG{{*/
var winform = win.form(text="简码编程 jianma123.com";right=344;bottom=176)
winform.add(
button={cls="button";text="上滚";left=165;top=21;right=234;bottom=51;z=2};
button2={cls="button";text="下滚";left=165;top=64;right=234;bottom=94;z=3};
richedit={cls="richedit";text="richedit";left=20;top=17;right=150;bottom=134;autohscroll=false;edge=1;multiline=1;z=1};
static={cls="static";left=255;top=29;right=266;bottom=78;bgcolor=32768;notify=1;z=4};
static2={cls="static";left=29;top=142;right=76;bottom=156;bgcolor=32768;z=5}
)
/*}}*/

import console;
winform.richedit.text =
/*dfadfsadfdsfdssssssssssssssssssssdfadfsadfdsfdsssssssssssssssssssssssssssssssssssssssssssssdfadfsadfdsfdsssssssssssssssssssssssssssssssssssssssssssssdfadfsadfdsfdsssssssssssssssssssssssssssssssssssssssssssssdfadfsadfdsfdssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss*/

winform.button.oncommand = function(id,event){
//上滚动
winform.richedit.vScroll(0x0/*_SB_LINEUP*/)
}

winform.button2.oncommand = function(id,event){
//下滚动
//winform.richedit.vScroll()//ok
winform.richedit.vScroll(0x1/*_SB_LINEDOWN*/)
}



winform.richedit.wndproc = function(hwnd,message,wParam,lParam){
if(message==0x020a){
//console.log("鼠标滚轮滚动",hwnd,message,wParam,lParam)
if( tonumber(wParam,10)==7864320){
//console.log("上滚")
winform.richedit.vScroll(0x0/*_SB_LINEUP*/)
}
if( tonumber(wParam,10)==4287102976){
//console.log("下滚")
winform.richedit.vScroll(0x1/*_SB_LINEDOWN*/)
}
}
//无返回值则继续调用默认回调函数
}

winform.static.wndproc = function(hwnd,message,wParam,lParam){
if( message == 0x201/*_WM_LBUTTONDOWN*/){
console.log("左键按下")
}

if( message == 0x201/*_WM_LBUTTONDOWN*/){
console.log("左键弹起")
}
//无返回值则继续调用默认回调函数
}

winform.show()
win.loopMessage();


/*****
!richedit.vScroll() = 滚动到底部
!richedit.hScroll() = 滚动到右侧
!richedit.vScroll(_SB__) = 滚动竖向滚动条
!richedit.hScroll(_SB__) = 滚动横向滚动条

0x115/*_WM_VSCROLL*/

0x208/*_WM_MBUTTONUP*/
0x207/*_WM_MBUTTONDOWN*/
0x209/*_WM_MBUTTONDBLCLK*/

case 0x020a: //鼠标滚轮滚动
case 0x0207://按下鼠标滚轮
case 0x0208://释放鼠标滚轮


下滚 十进制522等于十六进制020a
鼠标滚轮滚动 853534 522 4287102976 31982946
鼠标滚轮滚动 853534 522 4287102976 31982946
鼠标滚轮滚动 853534 522 4287102976 31982946

上滚
鼠标滚轮滚动 853534 522 7864320 29820269
鼠标滚轮滚动 853534 522 7864320 29820268
鼠标滚轮滚动 853534 522 7864320 29820268
鼠标滚轮滚动 853534 522 7864320 29885803

*****/

  • Admin Admin    
    Time:2018-04-30 19:12:18
    感谢群友console.log提供另一个直接使用0x20A/*_WM_MOUSEWHEEL*/的例子:
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="鼠标滚轮消息";right=369;bottom=309)
    winform.add(
    richedit={cls="richedit";left=10;top=10;right=212;bottom=219;autohscroll=false;autovscroll=1;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=1}
    )
    /*}}*/

    import console;
    winform.richedit.text = /***
    WM_MOUSEWHEEL
    fwKeys = LOWORD(wParam); /* key flags */
    zDelta = (short) HIWORD(wParam);
    /* wheel rotation */
    xPos = (short) LOWORD(lParam);
    /* horizontal position of pointer */
    yPos = (short) HIWORD(lParam);
    /* vertical position of pointer */

    其中:fwKeys指出是否有CTRL、SHIFT、鼠标键(左、中、右、附加)按下,允许复合。
    zDelta传递滚轮滚动的快慢,该值小于零表示滚轮向后滚动(朝用户方向),
    大于零表示滚轮向前滚动(朝显示器方向)。
    lParam指出鼠标指针相对屏幕左上的x、y轴坐标。
    ***/


    winform.richedit.wndproc = function(hwnd,message,wParam,lParam){
    if( message == 0x20A/*_WM_MOUSEWHEEL*/ ){
    var wheel = raw.convert({INT wParam=wParam},{word nFlags;word zDelta});
    console.log( wheel.nFlags, (wheel.zDelta>0)?"向上滚动":"向下滚动", ::LOWORD(lParam), ::HIWORD(lParam))
    }

    }

    winform.show()
    win.loopMessage();

[ 发单/接单 ]
换IP投票软件
PC蛋蛋自动挂机投注
新浪微博发微博显示尾巴的方法,比如显示来自iphone 7
百度文库批量自动上传软件
一点资讯app刷阅读量/评论/收藏/订阅功能/手机号注册
定做一个阿迪达斯官网注册器(需要破点击文字式验证码)
定制人人网自动注册/修改资料/采集/私聊软件
酷狗繁星直播网页协yi
YY多功能刷订阅刷粉丝
滑块验证码本地识别
狼人杀POST QQ登录注册 获取金币数量
做个贴吧发发帖的软件懂的来
今日头条账号保存cookie
抖音粉丝软件定做,只要粉丝
百家号自媒体发文软件定制
哔哩哔哩播放量
读取TB某个商品上架时间和相关信息
网易博客软件定制
定制天涯论坛发帖软件
定制今日头条批量自动发私信软件
[ 站内搜索 ]
[ 最近热帖 ]
万能助手 -- 扩展库大全集 13757
用aardio创建web工程图文讲解(1) 12848
电脑编程入门自学:Fiddler https 抓包时提示创建根证书不成功问题彻底解决(https插件dll方式) 11748
aardio绘图演示 11416
通过chrome.dll中间件控制外部chrome浏览器 10132
我常用的aardio技巧 9781
《边学C语言边赚钱——简码编程入门教程》系列集合 9620
aardio使用http或whttp进行get/post请求时经常cookies失效怎么办?__电脑计算机编程入门教程自学 9324
[源码下载]简码视频加密解密播放工具个人版v1.0发布,永久免费开源的知识变现神器 8559
python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学 8052
编程入门教程:aardio批量上传文件并显示进度条 7889
aardio调用nodejs的ws模块做一个简单的聊天通信示例 7042
电脑计算机编程入门教程自学:原生JavaScript判断字符是否为A-Za-z英文字母 6911
电脑计算机编程入门教程自学:腾讯tx或极验geetest滑块按住拖动完成拼图验证成功破解思路及源码 6506
乐玩插件AARDIO调用 6092
[ 近期热答 ]
电脑计算机编程入门教程自学:什么是buffer缓冲区? 1
aardio_代码编辑框书签管理器开源 1
aardio_怎么用ide库从代码编辑框中取出指定行的源码? 1
aardio_codepage代码页编码乱码暴力猜解工具 1
aardio内嵌echarts图表添加鼠标事件响应功能 2
aardio列表框listbox_模糊查找和精确查找 1
8亿QQ绑定手机泄露:通过腾讯QQ号查询QQ绑定的手机号码漏洞! 1
carl listviewex调用例子----------源码搬运工 2
Aardio内嵌Electron浏览框怎么正确添加启动参数? 1
Aardio取汉字的字节数或字符数 1
怎么实现mssql图片数据的读写 2
aardio_从49个数字里选六个和值为150的不重复的数字 1
在嵌入wps的时候,多了一个 透明的边框,这个怎么消除它 1
万能助手入门帮助教程:学会科学地管理工作文件 1
Aaardio开发内嵌Electron浏览框放服务器上无法下载组件的解决办法 1