急!!~~为什么我替换不了RealPlayer控件的右键弹出菜单!~~ 请高手不惜赐教!(20分)

  • 主题发起人 红枫叶
  • 开始时间

红枫叶

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的D6,程序很简单,只是个测试程序:一个普通窗口,一个RealPlayer控件和一个弹出菜单
并在设计期间把该菜单赋值给RealPlayer控件的popupmenu属性.
调试时,窗口刚打开的瞬间,RealPlayer控件的右键菜单是我所定义的弹出菜单,但是之后就变回原来的右键菜单!
困惑中!~有谁能帮我呀?!~~ 救救我!~
 
我也是一样,知道后告诉我
 
我也是一样
 
需要在 Application.OnMessage 中捕捉消息到处理!!!!!!!!


2. 处理RealPlayer控件的上下文菜单
其实RealPlayer 的“上下文菜单”不是真正意义上的上下文菜单,是一个右键点下菜单。仔细观察,会发现不同于其它控件的上下文菜单。
要想自定义该“上下文菜单”,对PupupMenu赋值,并在Application.OnMessage中进行处理:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
OleCtrls, RealAudioObjects_TLB, StdCtrls, Menus;

type
TForm1 = class(TForm)
RealAudio1: TRealAudio;
PopupMenu1: TPopupMenu;
aaaa1: TMenuItem;
aaaa2: TMenuItem;
procedure myproc(var Msg:TMsg;var Handled:boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.myproc(var Msg: TMsg
var Handled: boolean);
var
x1,y1,x2,y2,x,y:integer;
b:Boolean;
p:TPoint;
begin
x1:=realAudio1.left;
y1:=realAudio1.top;
x2:=x1+realAudio1.Width;
y2:=y1+realAudio1.height;

p:=ScreenToClient(msg.pt);
x:=p.x;
y:=p.y;

b:=((x>=x1) and (x<=x2) and (y>=y1) and (y<=y2));
if (b) then
begin
if (msg.message=wm_Rbuttondown) then
handled:=true;
if (msg.message=wm_Rbuttonup) then
begin
if assigned(realAudio1.PopupMenu) then
TrackPopupMenu(realAudio1.PopupMenu.Handle,
TPM_LEFTALIGN,msg.pt.x,msg.pt.y,0,handle,nil);
handled:=true;
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
application.OnMessage :=myproc;
end;

end.
 
接受答案了.
 
不好意思~~ 加分加错对象了~~jsxjd对不起了~我现在又改不了!![:(]
 
没关系!!
 
我今天又找到更好更简单的办法了,现在告诉大家:
先在用控件的如下方法,禁用控件的右键菜单,还必须照原样给控件的popupmenu属性赋自己设定的
菜单项,试试吧,怎么样,很简单吧!
RealAudio1.SetEnableContextMenu(false);
现在我还剩下一个问题,有时候因为网络问题,或者REAL服务器没开,REAL控件弹出的对话框
会暴露出真实的播放地址,这不是我们想看到的,我试了一下RealAudio1.SetEnableMessageBox(false);,没反应!
好像用消息处理的方法对替换或禁用REAL控件消息框没用哦,jsxjd你有什么好办法??
 
jsxjd问题已经圆满解决了,我今晚找到了一个完美的方法,很简单的~就屏蔽了REAL控件弹出的错误对话框!
在这再次多谢你!!!!!很希望得到你的比较直接的联系方法哦?!~~~^_^
 
To 红枫叶:
先在用控件的如下方法,禁用控件的右键菜单,还必须照原样给控件的popupmenu属性赋自己设定的
菜单项,试试吧,怎么样,很简单吧!
RealAudio1.SetEnableContextMenu(false);

好像不行,过一会后仍然弹出原有的菜单
 
to 红枫叶,我们可以联系一下吗?一起探讨一下realplayer控件使用上的一些心得。
我的联系方法:email:startcn@sina.com
 

Similar threads

回复
0
查看
658
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部