学习 Message(5): 关于 TApplicationEvents.OnMessage 的第二个参数 可以屏蔽 TWebBrowser右键菜单:

http://www.cnblogs.com/del/archive/2008/10/25/1319318.html

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.
时间: 2024-10-24 13:47:47

学习 Message(5): 关于 TApplicationEvents.OnMessage 的第二个参数 可以屏蔽 TWebBrowser右键菜单:的相关文章

parseInt神秘的第二个参数

前阵子在stackOverflow上看到两个这样的问题: 为什么parseInt(8,3) == NaN,parseInt(16,3) == 1? 为什么parseInt('dsff66',16) == 13? parseInt大家应该都很熟悉了,我们一般用他来把一个小数或字符串转换为整数,正常情况下我们都是这样做的: parseInt(11.2)//返回11 parseInt(‘13’)//返回Number类型的13 但是parseInt的第二个参数很多朋友就不太清楚了,因为本身就很少使用第二

ExtJS4.2学习(12)基于表格的右键菜单(转)

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-24/181.html ----------------------------------------------------------------------------------------------- 在实际的软件开发中,我们的grid表格为了方便用户通常会有一个右键菜单来实现对表格的增.删.改等操作,下面看一下演示的效果: 以下是完整可

[ jquery 过滤器 nextUntil([exp|ele][,fil]) ] 此方法用于在选择器的基础之上搜索被选元素的后面的所有同级元素,方法返回 selector 与 stop 之间的每个元素之后的所有同级元素,并且提供第二个参数来用于实现过滤效果,多个参数使用逗号相隔

此方法用于在选择器的基础之上搜索被选元素的后面的所有同级元素,方法返回 selector 与 stop 之间的每个元素之后的所有同级元素,并且提供第二个参数来用于实现过滤效果,多个参数使用逗号相隔,参数解释如下: 概述: 查找当前元素之后所有的同辈元素,直到遇到匹配的那个元素为止. 如果提供的jQuery代表了一组DOM元素,.nextUntil()方法也能让我们找遍所有元素所在的DOM树,直到遇到了一个跟提供的参数匹配的元素的时候才会停下来.这个新jQuery对象里包含了下面所有找到的同辈元素

JavaScript中使用函数做replace的第二个参数

通过第一个例子来全面看下作replace第二个参数的函数的参数....听起来是有点绕→_→ 例: //第一参数为正则表达式 1 var url = "http://www.softwhy.com/forum.php?mod=viewthread&tid=14743&extra=page%3D1"; 2 console.group("正则表达式"); 3 var regexp_global = /[?&](\w+)=([^&]*)/g;

addEventListener的第二个参数——listener

addEventListener() 方法是将指定的事件监听器注册到目标对象上,当该对象触发指定的事件时,指定的回调函数就会被执行.语法: element.addEventListener(type, listener[, useCapture]); 其中listener:当指定的事件类型发生时被通知到的一个对象.该参数必是实现EventListener接口的一个对象或函数. 即,第二个参数除了可以传入函数外,还可以传入对象. 那么实现EventListener接口的对象有什么特征呢? // 注

GetMessage的第二个参数

疑问 为什么GetMessage的第二个参数制定为hwnd后,应用程序无法退出? 解释 MSDN中指出: 当第二个参数为NULL时,GetMessage取得那些属于调用线程的窗口的消息和通过PostThreadMessage函数投递到调用线程的线程消息. GetMessage需要检索到WM_QUIT返回一个FALSE结束消息循环, 而WM_QUIT是通过PostQuitMessage发送, 属于线程消息, 而非普通的窗口消息. 如果在GetMessage中用hWnd而不是NULL, 虽然WM_Q

jQuery()方法的第二个参数

关于jQuery()方法的第二个参数,有下面这几种用法: 1.jQuery(selector, [context]) 这种用法,相当于 $(context).find(selector) 或者 context.find(selector) 2.jQuery(html, [ownerDocument]) 文档对ownerDocument的解释是:“创建DOM元素所在的文档” 也就是说,如果你要编写挎document的脚本,比如iframe或者用window.open开一个新窗口,可能会用得着它 3

getAttribute()方法的第二个参数

对于一个img元素,我们想获取它的src属性时可以有两种方式: 1.xxx.getAttribute("src") 2.直接通过xxx.src获取属性值 在src的属性值为相对路径时,这两者的结果在不同浏览器会有一些不同哦. 以此为例: var img=document.getElementById('logo'); alert("src:"+img.src); // iE7-: src:http://localhost/test/images/logo.png /

js中parseFloat(第一个参数,第二个参数)中第二个参数的解释

今天在看jquery的时候里面用到了parseFloat(第一个参数,10),一直不懂第二个参数是什么意思,于是上网查了一下,怕以后忘记就转了下来. 定义和用法:parseFloat() 函数可解析一个字符串,并返回一个浮点数. 语法:parseFloat(string),参数string是必须的,表示要被解析的字符串 返回值:返回解析后的数字 注意事项: 1.开头和结尾的空格是允许的. 2.如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN 3.如果只想解析