程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 自定義的TShockwaveflash

自定義的TShockwaveflash

編輯:Delphi
--------------------------------------------------- -------自定義的TShockwaveflash.ocx---------------- --------------------------------------------------- --------------------------------------------------- 添加功能:對鼠標在 flash.ocx 中的信息捕獲.---------- --------------------------------------------------- 可捕獲鼠標信息有: 1.鼠標在控件中移動時的坐標值; 2.鼠標右擊時彈出菜單的設置; 3.鼠標點擊控件時移動窗體; 4.鼠標是否移入控件; --------------------------------------------------- 編寫原因: 我一直在作一個flash播放器:D-Flasher. 所以,要在其中捕獲鼠標的一些消息. 但原 TShockwaveFlash 組件沒有這些方法. 只能通過:Application.OnMessage:=Form.Msgproc; 這樣的並不高級的辦法.所以作了這麼一個東西. 對 TShockwaveFlash 組件作了自定義. 在原來控件上加了對鼠標的行為的監控. 使得對 Flash 控件的鼠標消息處理的效率提高了. 用起來也方便了不少. 所以共享出來.若存在什麼錯誤,還請指正. 由於本人水平有限,也是處於學習中. 也有許多不完善的地方,歡迎大家進行修改. --------------------------------------------------- 源文件:CustomFlash.pas.你可以對它進行編譯. 源碼: {---------------------------------------------------------------} {---------------自定義的TShockwaveflash.ocx---------------------} {檢測:1.鼠標在控件中移動時的坐標值;2.鼠標右擊時彈出菜單的設置; } { 3.鼠標點擊控件時移動窗體;4.鼠標是否移入控件; } {---------------------------------------------------------------} {制作日期: 2004-8-23 [ending722] e-mail:[email protected] } {-----------------------------------------孤血雁工作室 楊光-----} unit CustomFlash; interface uses SysUtils,Classes,Controls,Menus,windows,forms, Messages,OleCtrls, ShockwaveFlashObjects_TLB; type TCustomFlash= class(TShockwaveFlash) private MPosX:integer; MPosY:integer; //鼠標在控件上的 X Y. FPopupMenu:TPopupMenu; LMoveFrm:Boolean; //窗體是否可以移動 MIsEnter:Boolean; FMoveFrmHwnd:TForm;//接收消息的窗體 protected procedure WMMMOVE(var message:tmessage);message WM_MOUSEMOVE; procedure WMMRDOWN(var message:tmessage);message WM_RBUTTONDOWN; procedure WMMENTER(var message:tmessage);message CM_MOUSEENTER; procedure WMMLEAVE(var message:tmessage);message CM_MOUSELEAVE; public published property mouseposX:integer read MPosX; property mouseposY:integer read MPosY; property PopupMenu:TPopupMenu read FPopupMenu write FPopupMenu; property IsMoveFrm:Boolean read LMoveFrm write LMoveFrm default false; property IsEnterFrm:Boolean read MIsEnter default false; property MoveFrmName:TForm read FMoveFrmHwnd write FMoveFrmHwnd; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TCustomFlash]); end; //得到鼠標移動的 X,Y 值. procedure TCustomFlash.WMMMOVE(var message:tmessage); begin MPosX:=message.LParamLo; MPosY:=message.LParamHi; //並發送給窗體. SendMessage(FMoveFrmHwnd.Handle,WM_MOUSEMOVE,message.WParam,message.LParam); if message.WParam=MK_LBUTTON then //左擊,移動主窗體. if (Mouse.CursorPos.Y<345) and (LMoveFrm) Then begin // 加入 標志 判斷. ReleaseCapture; SendMessage(FMoveFrmHwnd.Handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION, 0); end; //在 MOUSEMOVE 時判斷left是否按下, inherited; //比檢測 WM_LBUTTONDOWN 效果要好的多. end; procedure TCustomFlash.WMMRDOWN(var message:tmessage); begin If Assigned(FPopupMenu) Then //右擊,彈出菜單. FPopupMenu.popup(Mouse.CursorPos.X,Mouse.CursorPos.Y); end; //鼠標進入 flash.ocx procedure TCustomFlash.WMMENTER(var message:tmessage); begin MIsEnter:=true; end; //鼠標移出 flash.ocx procedure TCustomFlash.WMMLEAVE(var message:tmessage); begin MIsEnter:=false; end; end. --------------------------------------------------- 編寫語言及環境: Delphi7+windows2k+sp4 完成日期: 2004-8-23 --------------------------------------------------- E-MAIL:[email protected] [email protected] QQ:154041260 --------------------------------------------------
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved