c语言函数参数SendMessage函数的参数有几个?

功能强大的SendMessage函数
下面是个超简单的功能强大的SendMessage函数教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~
WindowsAPI(应用程序接口)是Windows系列软件为人员提供的火力强大的“武器库”,在这个武器库中,有很多极具威力的武器,SendMessage就是其中之一,它的功能非常丰富,灵活使用这个函数,会给编程工作带来很多便利。本文以Basic为例,结合几个具体的例子介绍该函数的功能。  一、SendMeaasge函数简介  顾名思义,SendMessage函数的功能是“发送消息”,即将一条消息发送到指定对象(、窗口或控件等)上,以产生特定的动作(如滚屏、修改对象外观等)。  SendMessage函数在VB中的函数说明如下:  DeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByvalhwndAsLong,ByvalwMsgAsLong,ByvalwParamAsLong,lParamAsAny)AsLong  其中四个自变量的含义和说明如下:  hWnd:对象的句柄。希望将消息传送给哪个对象,就把该对象的句柄作为实参传送,在VB中可以简单地用“对象.hWnd”获得某个对象的句柄,如Text1.hWnd和Form1.hWnd分别可以得到Text1和Form1的句柄。  wMsg:被发送的消息。根据具体需求和不同的对象,将不同的消息作为实参传送,以产生预期的动作。  wParam、lParam:附加的消息信息。这两个是可选的参数,用来提供关于wMsg消息更多的信息,不同的wMsg可能使用这两个参数中的0、1或2个,如果不需要哪个附加参数,则将实参赋为NULL(在VB中赋为0)。  在简单了解了SendMessage函数的格式和功能后,让我们以几个例子来看看它的威力。  二、SendMessage函数使用实例  例1多行TextBox中的快速处理功能在处理多行TextBox时我们经常会碰到以下几种情况:  希望了解多行TextBox中目前共有多少行文字。  想快速返回第N行的文字。  对于上面的情况,如果用VB自身的语句或函数来实现的话,要写不短的代码,而且由于要采用顺序查找的办法来完成,因此代码的执行效率也很低。如果使用SendMessage函数则可以大大减少代码量,并大幅度的提高执行效率。  用SendMessage函数完成上面两个任务的方法非常简单,每个任务只需简单地发送一条消息给多行TextBox即可,两个消息分别为:EM_GETLINECOUNT、EM_GETLINE,其它参数和返回值见附表。  下面用一个简单的实例演示这两个功能:  新建工程,在Form1上添加三个TextBox(名称分别为Text1、txtLineCount、TxtString,将Text1的Multi  Line属性置为True)、三个标签和一个命令按钮。为工程添加一个模块Moudle1,在其中写如下声明(其中  SendMessage函数的声明可以从VB的“API”中复制):-align="middle"width="20">消息常量名->-align="middle"width="20">消息值->-align="middle"width="20">wParam->-align="middle"width="20">lParam->-align="middle"width="20">返回值->-align="middle"width="20">EM_GETLINECOUNT->-align="middle"width="20">&HBA->-align="middle"width="20">未用->-align="middle"width="20">未用->-align="middle"width="20">行数->-align="middle"width="20">EM_GETLINE->-align="middle"width="20">&HC4->-align="middle"width="20">要找的行号->-align="middle"width="20">存结果的字节串->-align="middle"width="20">结果字节串的字节数->DeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong  PublicConstEM_GETLINECOUNT=&HBA  PublicConstEM_GETLINE=&HC4  在Form1的代码模块中写如下代码:  PrivateSubCommand1_Click()  Dimstr(256)AsByte  str(1)=1'最大允许存放256个字符  '获取总行数,结果显示在txtLineCount中  txtlineCount=SendMessage(Text1.hwnd,EM_GETLINECOUNT,0,0)  '获取第3行的数据放在str中,转换为字符串后显示在文本框txtString中  SendMessageText1.hwnd,EM_GETLINE,2,str(0)  txtString=StrConv(str,vbUnicode)  EndSub  之后,按F5运行程序,在多行文本框中随便键入几行文字,然后按下[确定]按钮,出现如图画面,说明程序正确统计出了总行数和第3行的文字。  两点补充说明:在调用SendMessage获取第N行字符串时,lParam需要说明为字节数组,在调用完成后,再将字节数组转换为字符串;另外,调用前必须在lParam的前两个字节指明允许存放的最大长度,其中第一个字节为低位,第二个字节为高位,本例将高位(即str(1))置1.说明最大允许存放256个字符。  例2程序控制拉下或收起组合框的下拉列来  一般情况下,为了拉下或收起组合框的下拉列表,需要用或进行操作,而有时我们希望程序运行的某个时刻自动拉出下拉列表(比如在一些演示程序中),为了实现这个目的,我们也只有借助于SendMessage函数,方法是发一个CB_SHOWDROPDOWN(&H14F)消息给组合框。  在发CB_SHOWDROPDOWN消息时,wParam参数决定了是拉下列表(=True时)还是收起列表(=False时),lParam无用(设为0)。  为说明具体的使用方法,下面提供简单的程序片段。首先在代码模块中做如下声明:  DeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong  ConstCB_SHOWDROPDOWN=&H14F  当程序中某处需要拉下组合框Combol的列表时,写如下调用语句:  SendMessageCombol.hwnd,CB_SHOWDROPDOWN,True,0  当需要收起组合框Combol的列表时,写如下语句:  SendMessageCombol.hwnd,CB_SHOWDROPDOWNN,False,0  例3在列表框中查找匹配的项目  在Win95风格的帮助系统中一般都有一个“索引”页,索引页含有一个文本框和一个列表框,当用户在文本框中输入文字时,下拉列表会动态地显示与文本框中文字最匹配的项目,为用户提供了最大的方便。这种效果在应用程序的帮助系统中很容易实现(只要按照Win95帮助系统的正常制作过程制作就可以实现),如果想在应用程序的其它地方实现这种特性就需费一番心思了。  而使用SendMessage函数实现上述特性则非常简单,甚至只需一条语句就足够了,那就是在文本框的Change事件中给列表框发一条LB_FINDSTRING(&H18F)消息,该消息告诉列表框在列表中查找匹配的项目。  在发LB_FINDSTRING消息时,wParam参数代表从列表框的哪一个项目后面开始查找,一般情况下该参数可定为-1,表示从List1(0)即第一项开始向后循环查找,lParam则传进欲搜索的字符串(必须采用值传递)。  具体的代码和运行画面与后面的例4合并在一起演示。  例4为ListBox添加水平滚动条  在VB中,列表框控件仅提供垂直滚动条,没有设置水平滚动条的能力,当某些项目的文本宽度较长时,超出列表框宽度部分的文本就无法显示出来,因此,很有必要为ListBox添加一个水平滚动条来方便操作。  为添加水平滚动条,只需发一条LB_SETHORIZONTALEXTENT(&H194)消息给列表框即可。发送消息时,wParam为滚动条的长度(以像素为单位,可通过计算得出准确的长度,也可随便给一个大于最大文本宽度的数字,如本例的250),lParam无用。下面是例3和例4合并在一起的代码和运行画面  DeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong  PublicConstLB_FINDSTRING=&H18F  PublicConstLB_SETHORIZONTALEXTENT=&H194  PrivateSubForm_Load()  List1.AddItem"软件"  List1.AddItem"电脑游戏"  List1.AddItem""  List1.AddItem"电视台"  List1.AddItem"电脑"  List1.AddItem"电脑游戏软件"  '下一句为列表框添加水平滚动条  SendMessageList1.hwnd,LB_SETHORIZONTALEXTENT,250,0  EndSub  PrivateSubText1_Change()  '注意!当lParam传入的是字符串时,必须用ByVal传递  List1.ListIndex=SendMessage(List1.hwnd,LB_FINDSTRING,-1,ByValText1.Text)  EndSub  通过上面几个例子,想必您已经对SendMessage函数的强大功能有了初步的了解。事实上利用该函数我们还可以完成更多更好的任务,如控制文本框的自动滚屏、实现文字编辑过程中的Undo功能、操纵应用程序的窗体控制菜单等等,感兴趣的读者请参阅有关WindowsAPI的资料。  本文程序均用VisualBasic5.0企业版编写,在Pwin95环境下运行正常。->& 搜索“图老师”或者“tulaoshi_com”加关注,每天最新的美食、、育儿、美妆、、手工DIY等教程让你一手全掌握。推荐关注!【扫描下图可直接关注】
来源:/n/2212.html
点击查看更多与《》相关的文章>>
生活已是百般艰难,为何不努力一点。下面图老师就给大家分享Oracle 函数大全[字符串函数数学函数日期函数],希望可以让热爱学习的朋友们体会到设计的小小的乐趣。
可定制大小和数量的随机数函数,可定制大小和数量的随机数函数
清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐一个不错的可以检测多中浏览器的函数和其它功能,无聊中的都看过来。
php3的ODBC函数,php3的ODBC函数
下面图老师小编要向大家介绍下Javascript中的数学函数,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!
清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐增强的 JavaScript 的 trim 函数的代码,无聊中的都看过来。
热门搜索:
让黑白颠倒制作漂亮夜景效果 PS基础实例教程
电脑网络经常掉线怎么办
在哪里设置word文档不保存最近浏览文档记录
PS教程 ps双曲线修图使用方法步骤图解
助跑器是田径运动必备的器材之一,类直三角形状,注意助跑器脚蹬立体感,让助跑器简笔画更具特色。接下来我们就通过助跑器儿童简笔画教学步骤图解来学如何画助跑器儿童简笔画。
爱看书的朋友家里应该会有很多的书签,书签的作用就是可以在不损坏书页的情况下对页码进行分界标记,那么,你会自己手绘书签吗?下面给大家带来看DIY可爱人物书签制作步骤图,一起来看看吧。
现在很多人都非常喜欢饲养狗狗,作为狗主人,我们当然有责任和义务好好照看我们的狗宝宝。贵宾犬是很多人都非常喜欢的一种狗狗,而且确实很多人都会饲养它。那么怎么治疗贵宾犬便秘?
现在很多人都非常喜欢饲养狗狗,作为狗主人,我们当然有责任和义务好好照看我们的狗宝宝。贵宾犬是很多人都非常喜欢的一种狗狗,而且确实很多人都会饲养它。那么贵宾犬便秘了怎么办?
怎么利用Photoshop给电商模特照片精修磨皮?很多朋友在工作中经常会遇到要求精修模特的情况,特别是做化妆品行业的电商设计师,所以总结了一下我的模特修图方法和技巧与大家分享,喜欢的朋友让我们一起来学习吧。
磨皮是我们ps照片最基本的技能,Photoshop人物磨皮是我们必须掌握的,如今不少国人对Photoshop修图的三大酷炫神技双曲线、中性灰与高低频几近痴迷,抓耳挠腮想学会它,下面一起看看教程吧。
掌握一点Photoshop教程对你是非常有用的,这篇教程是给大家分享PS简单快速创建眼睛彩虹美瞳效果方法,教程最终创建出来的效果非常漂亮,而且难度并不是很大,很值得大家学习,一起来学习吧。
2017年最受欢迎的生活服务APP!!生活服务类App的出现为日常生活带来极大便利,我们可以通过手机客户端预约各种家政服务,足不出户就能够享受实惠、便捷的生活服务,那么接下来我为大家推荐一些生活中必备生活app。
由于现在抢红包大热起来,很多app都开始支持发红包抢红包了,因此也出现了微信抢红包神器,可以自动抢微信红包,肯定比认为手动操作快,有消息就会自动打开,然后打开红包。今天就给大家分享2017微信自动抢红包神器大全。
2017手机赚钱软件排行榜!!很多朋友都在苦恼每天的钱不够话,空闲时间不知道怎么打发,总想寻找一种简单的赚钱方式,我们的手机app就有很多,下面具体给大家介绍手机赚钱软件有哪些,总有一款你中意的。
经常玩微信的朋友都知道,微信小程序已经全面上线了,对于小程序的出现是否会引发App变革众说纷纭,但不可否认的是小程序能够带给用户及产商一定的便利,那么今天为大家汇总目前上线的一些实用小程序。
男女交往一直都是人们比较关注的一个问题,都说相爱容易,相处不易,交往过的朋友应该都能深刻的体会到,女生常常抱怨着让男生理解自己,但男生也希望多体谅一下他们。尤其不要老是问一些无法回答的问题来考验他们。
很多朋友都信风水一说,对于自己家里房屋客厅的装修也是有一定要求的,因为客厅的风水关系着整个家居的运势,更关系着主人的财运与健康,因而客厅里的风水禁忌是需要我们谨慎注意的,那么风水学中客厅风水禁忌有哪些呢?
春天已经来临了,夏天也不远了,新的一才刚刚开始,时尚爱美的美眉们最关注的就是春夏服装设计的流行趋势了,早早的把握住时尚趋势走在流行的最尖端,今天就给大家整理分享2017春夏女装设计流行趋势 ,你绝对不能错过的亮点。您的访问出错了(404错误)
很抱歉,您要访问的页面不存在。
1、请检查您输入的地址是否正确。
进行查找。
3、感谢您使用本站,3秒后自动跳转至网站首页您的访问出错了(404错误)
很抱歉,您要访问的页面不存在。
1、请检查您输入的地址是否正确。
进行查找。
3、感谢您使用本站,3秒后自动跳转至网站首页

我要回帖

更多关于 c语言函数参数 的文章

 

随机推荐