zoukankan      html  css  js  c++  java
  • 句柄6

    SendMessage发送文本技巧精解,不容错过
    用发送文本控制外部控件内容,是程序员经常遇到的难题,第一个是句柄查找,具体请参考我的帖子,查找子窗口与枚举子窗口例程.
    第二个难题就是如何把文本发送出去.今天就第二个问题进行讲解
    第一种方法:post 该 方法没有返回值
    .版本 2

    .子程序 投递文本, , 公开, 向指定窗口句柄的窗口中发送文本内容(无返回值)
    .参数 窗口句柄, 整数型, , 接收消息的窗口句柄
    .参数 文本内容, 文本型, , 发送的文本内容
    .局部变量 消息, 字节集
    .局部变量 长度, 整数型
    .局部变量 计次, 整数型

    消息 = 到字节集 (文本内容)
    长度 = 取字节集长度 (消息)
    .计次循环首 (长度, 计次)
    投递消息 (窗口句柄, 258, 消息 [计次], 0)
    .计次循环尾 ()

    .版本 2

    .DLL命令 投递消息, , , "PostMessageA", 公开, 向指定窗口句柄发送消息
    .参数 h, 整数型
    .参数 m, 整数型
    .参数 p, 整数型
    .参数 p, 整数型

    效果是在控件当前选择起始位置添加文本.(注意如果控件有部分文本处于被选中状态,将发生替换选中文本)

    第二种方法:send

    其中最为常用 的就是用#WM_SETTEXT(12)来发送文本

    即 发送消息_文本 (hwnd, 12, 0, 传递的内容) '  传递文本#WM_SETTEXT12
    .版本 2

    .DLL命令 发送消息_文本, 整数型, "user32", "SendMessageA", , 调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum, ; SendMessageByString是该函数的“类型安全”声明形式 由具体的消息决定
    .参数 窗口句柄, 整数型, , 要接收消息的那个窗口的句柄
    .参数 信息值, 整数型, , 消息的标识符
    .参数 参数一, 整数型, , 具体取决于消息
    .参数 参数二, 文本型, , 具体取决于消息;

    效果是替换原来的文本内容为传递的文本内容

    如果想保留原来的部分内容怎么办?用以下 的api

    .版本 2

    .DLL命令 发送消息_整数, 整数型, "user32", "SendMessageA", , 调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum, ; SendMessageByString是该函数的“类型安全”声明形式 由具体的消息决定
    .参数 窗口句柄, 整数型, , 要接收消息的那个窗口的句柄
    .参数 信息值, 整数型, , 消息的标识符
    .参数 参数一, 整数型, , 具体取决于消息
    .参数 参数二, 整数型, , 具体取决于消息; 注意 最后 参为整数型

    用到的命令用下:
    .版本 2

    发送消息_整数 (hwnd, 177, 整数, 整数)
    发送消息_ (hwnd, 194, 1, 传递的内容)
    这里的第3参和第4参都是整数,是什么整数呢?这个有讲究
    你可以先放几个数试验下:
    如:发送消息_整数 (hwnd, 177, -1, 0)
    发送消息_整数 (hwnd, 177, 5, 3)
    发送信息_整数 (hwnd, 177,4 8)
    发送信息_整数 (hwnd, 177,4 -1)
    多试几次,就会发现,原来传递的文本与原文本间发生了有趣的组合
    现总结如下:
    i)如果第三参为-1,不管第四参为何数,都是在原文本的焦点位置添加文本(如原文本部分内容处于被选择状态,则发生替换该 选择内容...
    ii)如果第四参为-1,且 第三参不为-1(第三参为-1时参数i)设为 x,效果是从原文本的第x的位置开始全部替换,如x=0,则从文本起始处替换...
    iii)在第三参与第四参都不为-1时,第三参设为x,第四参设为 y,不管x,y哪个 大.永远是从两者最小的那个 数作为开始位置,替换的数量为两者之差
    如x=3,y=7,则从第3个位置替换7-3=4个字符.又如x=8,y=5,则从第5个位置替换8-5=3个字符...
    iiii)对于汉字而言,一个汉字相当于两个字符...
    例程未写,仅发出来让大家参考下.发送文本的若干方式.和发送后的效果...
    有兴趣,可跟帖讨论...

  • 相关阅读:
    HGOI 20191029am 题解
    『ZJOI2019 D2T2』语言
    『NOIP 2019Day2 T3』 保卫王国(defense)
    『HGOI 20190917』Lefkaritika 题解 (DP)
    『HGOI 20190917』Cruise 题解 (计算几何+DP)
    HGOI 20190830 题解
    『Codeforces 1186E 』Vus the Cossack and a Field (性质+大力讨论)
    HGOI 20190828 题解
    BZOJ 1934 善意的投票
    BZOJ 2763 飞行路线 BFS分层
  • 原文地址:https://www.cnblogs.com/hssbsw/p/1963970.html
Copyright © 2011-2022 走看看