对于在delphi中调用windows api 参数的疑问(200分)

  • 主题发起人 主题发起人 linli0
  • 开始时间 开始时间
L

linli0

Unregistered / Unconfirmed
GUEST, unregistred user!
请看这一句:SendMessage(Edit1.Handle, WM_SETTEXT, 0, Integer(Pchar('Hello,guy')));<br>我知道SendMessage的参数是(HWND hwnd, UNIT Msg, WPARAM wParam, LPARAM lparam)<br>而消息WM_SETTEXT也带着两个参数 分别是WPARAM = 0 ,lParam = (LPARAM)(LPCTSTR)lpsz<br>现在我就不明白了<br>(1)究竟SendMessage(Edit1.Handle, WM_SETTEXT, 0, Integer(Pchar('Hello,guy')));<br>这句语句中所列的参数是按照哪个进行参数定义的呢?<br>(2)在SendMessage(HWND hwnd, UNIT Msg, WPARAM wParam, LPARAM lparam)和<br>&nbsp; WM_SETTEXT中的两个同名参数 WPARAM = 0 ,lParam = (LPARAM)(LPCTSTR)lpsz之间有何关系呢?<br>(3)若是在语句SendMessage(Edit1.Handle, WM_SETTEXT, 0, Integer(Pchar('Hello,guy')));<br>&nbsp; &nbsp; &nbsp;中,我没有将Pchar('Hello,guy')强制转换为integer型,则编译会出现类型不匹配的提示<br>&nbsp; &nbsp; &nbsp;究竟我应该看哪一个来匹配呢?又从哪里看出来这个参数应该是整型值呢?谢谢各位。<br>
 
该Windows API函数的使用可参考MSDN。<br>关于第(1)、(2)个问题,我的个人理解:<br>(HWND hwnd, UNIT Msg, WPARAM wParam, LPARAM lparam)<br>是SendMessage函数的定义。具体到WM_SETTEXT消息,其参数可取值如上所定:<br>分别是WPARAM = 0 ,lParam = (LPARAM)(LPCTSTR)lpsz。<br>第(3)个问题可参考MSDN中相关定义说明,简单说是类型匹配问题。
 
1、WPARAM 和 lParam已在消息中有过说明,你只能按照书上的办法来做!至于为甚,在此<br>&nbsp; &nbsp;一、两句话也说不清楚,可参照Windows3.1手册。<br>2、Integer(Pchar('Hello,guy'))的最终类型必须由sendmessage过程来定义,若它为整型<br>这样写就没有错,否则就....<br>
 
sendmessage的过程的返回值怎么会是整型呢?
 
&nbsp;看看!
 
我来说说:<br>(1):SendMessage的参数是(HWND hwnd, UNIT Msg, WPARAM wParam, LPARAM lparam)<br>第一个参数是个消息接受的句柄,也就是说表明接受消息的资源(如某个窗体或者控件)。<br>第二个参数是具体的消息名称。<br>后两个是实际的消息所携带的参数。每个消息都必须携带这两个参数。<br>(2),这连个参数之间的关系可以这样说明,第一个参数是个整型的数字,第二个是个<br>指针。也就是说第一个参数传递的是一个简单的数字,而第二个传递的是一些简单类型数据的<br>集合(当然也可以仅仅是一个简单类型的数据)<br>因为一个消息所需要传递的参数用两个简单类型的数据不一定够用,所以需要引入<br>一个指针类型的参数(实际指针类型是个长整型的数字,用来指向实际的数据区域),<br>指针类型参数的引入主要是用来存储更多的所需数据。<br>(3),按照消息的定义,两个参数必须是wParam,和lParam类型的,wParam和integer通用<br>而lParam对应的是个长整型的数据指针。一般都需要用LPARAM()进行类型转换。
 
其实WPARAM、LPARAM都是整型值<br>所以3会出错<br>既然是整型值,那它就可以代表一个整数,也可以保存的是一个指针地址。<br>Integer(Pchar('Hello,guy')这个参数是把'Hello,guy'这个字符串的地址传过去<br>因为PChar是以/0结尾的,所以Windows能根据其地址取得此字串。<br>第2个问题没看懂。
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
778
import
I
后退
顶部