亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? “磁性”窗口 (2001年4月13日).txt

?? 自己對DELPHI學習的一點體會
?? TXT
字號:
“磁性”窗口 (2001年4月13日) 

網友更新  分類:圖形圖象   作者: oldseven(推薦)  推薦:oldseven   閱讀次數:466  
(http://www.codesky.net)  

--------------------------------------------------------------------------------
Winamp的用戶都知道,Winamp的播放列表或均衡器在被移動的時候,仿佛會受到一股磁力,每當靠近主窗口時就一下子被“吸附”過去,自動沿邊對齊。我想讓我的Winamp插件也具備這種奇妙特性,于是琢磨出了一種“磁化”窗口的方法。該法適用于Delphi的各個版本。為了演示這種技術,請隨我來制作一個會被Winamp“吸引”的樣板程序。
  先新建一應用程序項目,把主窗口Form1適當改小些,并將BorderStyle設為bsNone。放一個按鈕元件,雙擊它并在OnClick事件中寫“Close;”。待會兒就按它來結束程序。現在切換到代碼編輯區,定義幾個全局變量。
  var
   Form1: TForm1; //“磁性”窗口
   LastX, LastY: Integer; //記錄前一次的坐標
   WinampRect:TRect; //保存Winamp窗口的矩形區域
   hwnd_Winamp:HWND; //Winamp窗口的控制句柄
  接著編寫Form1的OnMouseDown和OnMouseMove事件。
  procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
  const
   ClassName=‘Winamp v1.x’; //Winamp主窗口的類名
   //如果改成ClassName=‘TAppBuilder’,你就會發現連Delphi也有引力啦!
  begin
  //記錄當前坐標
  LastX := X;
  LastY := Y;
  //查找Winamp
  hwnd_Winamp := FindWindow(ClassName,nil);
  if hwnd_Winamp>0 then //找到的話,記錄其窗口區域
  GetWindowRect(hwnd_Winamp, WinampRect);
  end;
  procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
   Y: Integer);
  var
   nLeft,nTop:integer; //記錄新位置的臨時變量
  begin
  //檢查鼠標左鍵是否按下
   if HiWord(GetAsyncKeyState(VK_LBUTTON)) > 0 then
   begin
   //計算新坐標
   nleft := Left + X - LastX;
   nTop := Top + Y - LastY;
   //如果找到Winamp,就修正以上坐標,產生“磁化”效果
   if hwnd_Winamp>0 then
   Magnetize(nleft,ntop);
   //重設窗口位置
   SetBounds(nLeft,nTop,width,height);
   end;
  end;
  別急著,看Magnetize()過程,先來了解一下修正坐標的原理。根據對Winamp實現效果的觀察,我斗膽給所謂“磁化”下一個簡單的定義,就是“在原窗口與目標窗口接近到某種預定程度,通過修正原窗口的坐標,使兩窗口處于同一平面且具有公共邊的過程”。依此定義,我設計了以下的“磁化”步驟。第一步,判斷目標窗口(即Winamp)和我們的Form1在水平及垂直方向上的投影線是否重疊。“某方向投影線有重疊”是“需要進行坐標修正”的必要非充分條件。判斷依據是兩投影線段最右與最左邊界的差減去它們寬度和的值的正負。第二步,判斷兩窗口對應邊界是否靠得足夠近了。肯定的話就讓它們合攏。
  好了,下面便是“神秘”的Magnetize過程了……
  procedure TForm1.Magnetize(var nl,nt:integer);
   //內嵌兩個比大小的函數
   function Min(a,b:integer):integer;
   begin
   if a>b then result:=b else result:=a;
   end;
   function Max(a,b:integer):integer;
   begin
   if a    end;
  var
   H_Overlapped,V_Overlapped:boolean; //記錄投影線是否重疊
   tw,ww,wh:integer; //臨時變量
  const
   MagneticForce:integer=50; //“磁力”的大小。
   //準確的說,就是控制窗口邊緣至多相距多少像素時需要修正坐標
   //為了演示,這里用一個比較夸張的數字——50。
   //一般可以用20左右,那樣比較接近Winamp的效果
  begin
  //判斷水平方向是否有重疊投影
  ww := WinampRect.Right-WinampRect.Left;
  tw := Max(WinampRect.Right,nl+Width)-Min(WinampRect.Left,nl);
  H_Overlapped := tw<=(Width+ww);
  //再判斷垂直方向
  wh := WinampRect.Bottom-WinampRect.Top;
  tw := Max(WinampRect.Bottom,nt+Height)-Min(WinampRect.Top,nt);
  V_Overlapped := tw<=(Height+wh);
  //足夠接近的話就調整坐標
  if H_Overlapped then
   begin
   if Abs(WinampRect.Bottom-nt)    
else if Abs(nt+Height-WinampRect.Top)    
end;
  if V_Overlapped then
   begin
   if Abs(WinampRect.Right-nl)    
else if Abs(nl+Width-WinampRect.Left)    
end;
  end;
  怎么樣?運行后效果不錯吧!
    
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲狠狠爱一区二区三区| 久久女同性恋中文字幕| 日韩欧美国产一区在线观看| 欧美电视剧在线看免费| 中文一区二区在线观看| 夜夜爽夜夜爽精品视频| 青青草97国产精品免费观看 | 欧美区视频在线观看| 亚洲视频中文字幕| 丝袜美腿亚洲色图| 国产精品一二三四区| 色视频成人在线观看免| 欧美一区二区三区成人| 中文字幕一区免费在线观看| 亚洲成av人在线观看| 国产精品亚洲人在线观看| 色88888久久久久久影院按摩| 欧美一区二区日韩一区二区| 欧美精品一区在线观看| 亚洲欧洲av色图| 免费在线观看一区| 91在线看国产| 精品国产三级a在线观看| 亚洲欧洲中文日韩久久av乱码| 日本不卡1234视频| 色婷婷综合激情| 国产色产综合色产在线视频| 亚洲成av人在线观看| av中文字幕不卡| 精品乱人伦小说| 亚洲免费观看高清完整 | 久久一区二区三区四区| 亚洲综合一区二区三区| 成人自拍视频在线| 日韩免费在线观看| 亚洲电影视频在线| 99精品视频在线观看免费| 337p粉嫩大胆色噜噜噜噜亚洲 | 91高清视频在线| 国产精品污污网站在线观看| 麻豆精品视频在线观看免费| 91久久久免费一区二区| 国产精品色一区二区三区| 老司机精品视频一区二区三区| 欧美性xxxxxx少妇| 国产精品乱码久久久久久| 国产精品综合一区二区三区| 欧美日本在线观看| 亚洲小说春色综合另类电影| 99精品视频中文字幕| 欧美—级在线免费片| 国产一区二区中文字幕| 黄色日韩三级电影| 制服丝袜成人动漫| 亚洲大片免费看| 91国产成人在线| 亚洲视频一区二区免费在线观看| 国产精品99久| 久久久综合精品| 国产一区二区三区在线观看精品| 欧美一区二视频| 天天操天天干天天综合网| 在线观看欧美黄色| 一区二区三区资源| 色激情天天射综合网| 亚洲男女毛片无遮挡| 成人不卡免费av| 中文字幕乱码一区二区免费| 国产美女在线精品| 国产人成一区二区三区影院| 国产老女人精品毛片久久| 久久综合色婷婷| 国产盗摄视频一区二区三区| 26uuu亚洲综合色| 国产精品99久久久久久宅男| 久久蜜桃香蕉精品一区二区三区| 国产精品77777| 欧美国产在线观看| 99国产精品视频免费观看| 亚洲欧美日韩系列| 欧美专区在线观看一区| 偷拍自拍另类欧美| 日韩一级大片在线| 国产激情一区二区三区| 欧美国产日韩精品免费观看| 成人av免费在线播放| 亚洲精选视频在线| 欧美日韩国产中文| 久久99精品久久只有精品| 久久这里只有精品视频网| 成人妖精视频yjsp地址| 亚洲欧美另类小说| 欧美日韩精品一区二区天天拍小说| 五月婷婷色综合| 久久亚洲一区二区三区四区| 婷婷夜色潮精品综合在线| 99久久综合国产精品| 一二三四社区欧美黄| 91精品国产一区二区三区| 国产在线一区观看| 自拍av一区二区三区| 欧美巨大另类极品videosbest| 精品一区二区在线免费观看| 国产欧美精品一区| 欧美色视频在线| 狠狠色丁香久久婷婷综合丁香| 亚洲国产高清在线观看视频| 欧美在线一二三| 奇米色一区二区| 国产精品三级av| 欧美久久久影院| 福利视频网站一区二区三区| 亚洲一区欧美一区| 久久久亚洲精品石原莉奈| 一本一道综合狠狠老| 裸体一区二区三区| 自拍偷拍亚洲欧美日韩| 欧美一级高清大全免费观看| 东方欧美亚洲色图在线| 丝袜美腿成人在线| 国产精品每日更新| 91精品国产福利| 91偷拍与自偷拍精品| 久久精品国产久精国产| 亚洲乱码国产乱码精品精的特点| 日韩小视频在线观看专区| 99久久婷婷国产综合精品| 日韩高清国产一区在线| 国产偷v国产偷v亚洲高清| 欧美日韩国产乱码电影| 成人午夜短视频| 久久国产免费看| 一区二区不卡在线视频 午夜欧美不卡在| 欧美变态凌虐bdsm| 91国偷自产一区二区三区观看 | 久久综合九色综合欧美亚洲| 91官网在线免费观看| 国产成人一区在线| 蜜乳av一区二区三区| 一区二区三区自拍| 国产精品网友自拍| 欧美成人欧美edvon| 欧美性受xxxx| 97se亚洲国产综合自在线不卡| 九九在线精品视频| 日日夜夜精品免费视频| 国产精品久久久久久户外露出 | 伦理电影国产精品| 亚洲地区一二三色| 日韩伦理免费电影| 国产亚洲精品久| 欧美放荡的少妇| 国产一区高清在线| 久久97超碰国产精品超碰| 亚洲香蕉伊在人在线观| 日韩美女啊v在线免费观看| 久久久精品人体av艺术| 日韩欧美综合在线| 91精品在线麻豆| 欧美精三区欧美精三区| 欧洲精品一区二区三区在线观看| 成人激情黄色小说| 国产成人精品免费视频网站| 精品综合免费视频观看| 美女一区二区久久| 秋霞成人午夜伦在线观看| 午夜久久久久久| 亚洲成a人v欧美综合天堂下载 | 欧美日韩另类国产亚洲欧美一级| 色哟哟精品一区| 91在线观看污| 成人福利电影精品一区二区在线观看| 国产剧情一区二区| 国产成人丝袜美腿| 国产精品一区三区| 国产成人精品免费| 国产成a人亚洲精品| 国产伦精一区二区三区| 久久成人免费网站| 久久99精品久久久久| 久久99精品一区二区三区| 精品伊人久久久久7777人| 美女一区二区在线观看| 久久福利资源站| 精品亚洲国内自在自线福利| 久久精品国产精品亚洲红杏| 久久国产精品色| 国产精品系列在线播放| 国产成人在线视频网址| 国产成人精品午夜视频免费| 国产一区不卡视频| 成人毛片老司机大片| 91香蕉视频污| 在线影院国内精品| 欧美疯狂做受xxxx富婆| 日韩精品中文字幕一区二区三区| 精品欧美久久久| 国产免费久久精品| 亚洲欧美国产高清| 亚洲18女电影在线观看|