zoukankan      html  css  js  c++  java
  • 学习 Message(5): 关于 TApplicationEvents.OnMessage 的第二个参数


    TApplicationEvents.OnMessage 的第二个参数 Handled 如果是 True, 表示消息已经处理过了, 到此为止.
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, AppEvnts, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        ApplicationEvents1: TApplicationEvents;
        procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    begin
      if Msg.message = WM_LBUTTONDOWN then
      begin
        Memo1.Lines.Add('OnMessage');
        Handled := False; {Handled 默认是 False, 这句可以省略}
    //    Handled := True;  {如果这样, 下面 OnMouseDown 事件将不会得到执行}
      end;
    end;
    
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Memo1.Lines.Add('OnMouseDown');
    end;
    
    end.
    

    我们可以利用这个特性来屏蔽一些消息, 譬如给 TWebBrowser 屏蔽右键菜单:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, OleCtrls, SHDocVw, AppEvnts;
    
    type
      TForm1 = class(TForm)
        WebBrowser1: TWebBrowser;
        ApplicationEvents1: TApplicationEvents;
        procedure FormCreate(Sender: TObject);
        procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    begin
      if IsChild(WebBrowser1.Handle, Msg.hwnd) and (Msg.message = WM_RBUTTONDOWN) then
      begin
        Handled := True;
      end;
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      WindowState := wsMaximized;
      WebBrowser1.Align := alTop;
      WebBrowser1.Navigate('http://www.cnblogs.com/del/');
    end;
    
    end.
    
  • 相关阅读:
    windows下一些启动服务的命令
    使用命令行启动服务
    无法向会话状态服务器发出会话状态请求转
    SQLServer跨服务器连接的多种方法
    Response.Buffer = True
    UpdatePanel和Jquery冲突
    <iframe>标签自适应高度和宽度
    java判断获取到的中文字符串是否乱码
    MMC不能打开文件C:\WINDOWS\SYSTEM32\inetsrv\iis.msc,如何解决?
    在.NET中用excel导出(概要)
  • 原文地址:https://www.cnblogs.com/del/p/1319318.html
Copyright © 2011-2022 走看看