zoukankan      html  css  js  c++  java
  • Perform()/SendMessage()


    Perform()
        VCL的Perform()方法适用于所有的TControl派生对象。Perform()可以向任何一个窗件或控件发送消息,只需要知道窗体或控件的实例。Perform()需要传递3个参数:消息标识符,wParam和lParam。
    Perform()是这样声明的:
    function Perform(Msg: Cardinal; WParam, LParam: Longint): Longint;
    Perform
    Perform()把3个参数组装成TMessage记录,然后调用WindowProc()方法把消息传递给Windows的消息系统。
    要给一个窗件或控件发送一个消息,可以参照下面的代码:
    RetVal = ControlName.Perform(MessagID, wParam,lParam);
    调用了Perform()后,它要等消息得到处理后才返回。

    SendMessage()和PostMessage()
    是Windows有两个API函数。
    function SendMessage; external user32 name 'SendMessageA';
    function SendMessageA(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
    function PostMessage; external user32 name 'PostMessageA';
    function PostMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL; stdcall;
    可以实现这一点:SendMessage()和PostMessage().这两个函数几乎是一样的,它们的区别是:
    SendMessage()跟Perform一样是同步调用,消息直接发往目的窗口,等消息被处理后才返回。
    Postmessage()是异步调用,把消息发送到消息队伍后立即返回。
    其次,他们的返回值也是不一样的。Postmessage()是返回值是一个Bool值。



    Code
  • 相关阅读:
    进程与线程
    HTML——部分MP4在谷歌浏览器上无法播放
    Node——用http-proxy 做反向代理服务器
    jQuery——操作复选框(checkbox) attr checked不起作用
    ionic2——开发利器之Visual Studio Code 常用插件整理
    ionic2——开发利器之Visual Studio Code 常用快捷键
    ionic2常见问题——修改应用图标及添加启动画面(官方命令行工具自动生成)
    ionic2常见问题——启动后白屏问题
    ionic2常见问题——解决下载gradle-2.14.1-all.zip太慢或失败
    ionic2常见问题——cordova使用Gradle构建下载maven太慢,使用阿里云镜像
  • 原文地址:https://www.cnblogs.com/samsonleung/p/1237424.html
Copyright © 2011-2022 走看看