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

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

?? magnetic.pas

?? 下面又是翻譯: 韓國人 Silhwan Hyun 改寫。 TMagnetic Class 是一個 Delphi 版本的"cMagneticWnd" 類
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
            end;

            // verify connections
            pvCheckGlueing;

            // Success
            Result := True;
            Break;
        End;
    end;
End;

procedure TMagnetic.CheckGlueing;
begin
    // Check ALL windows for possible new *connections*.
    pvCheckGlueing;
End;


procedure TMagnetic.pvSizeRect(Handle: HWND; var rcWnd: TRECT; lfEdge: integer);
var
  rcTmp: TRECT;
  lC:    integer;

begin
  // Get a copy
  CopyMemory(@rcTmp, @rcWnd, LB_RECT);

  // Check all windows
  for lC := 0 to m_lWndCount do
  begin
    with m_rcWnd[lC] do
    begin
      // Avoid hidden window
      if lC <> 0 then  // m_rcWnd[0] has the window rect of Desktop area
        if not IsWindowVisible(m_uWndInfo[lc].h_wnd) then   // **************** Added
           continue;

      // Avoid current window
      if (m_uWndInfo[lC].h_wnd <> Handle) then
      begin
        // X magnetism
        if (rcWnd.Top < Bottom + SnapWidth) and (rcWnd.Bottom > Top - SnapWidth) then
        begin
          case lfEdge of

            WMSZ_LEFT, WMSZ_TOPLEFT, WMSZ_BOTTOMLEFT:
            begin
              //Case True of
              case Abs(rcTmp.Left - Left) < SnapWidth of
                True:
                  rcWnd.Left := Left;
              end;
              case Abs(rcTmp.Left - Right) < SnapWidth of
                True:
                  rcWnd.Left := Right;
              end;
            end;
            WMSZ_RIGHT, WMSZ_TOPRIGHT, WMSZ_BOTTOMRIGHT:
            begin
              case Abs(rcTmp.Right - Left) < SnapWidth of
                True:
                  rcWnd.Right := Left;
              end;
              case Abs(rcTmp.Right - Right) < SnapWidth of
                True:
                  rcWnd.Right := Right;
              end;
            end;
          end;
        end;

        // Y magnetism
        if (rcWnd.Left < Right + SnapWidth) and (rcWnd.Right > Left - SnapWidth) then
        begin
          case lfEdge of

            WMSZ_TOP, WMSZ_TOPLEFT, WMSZ_TOPRIGHT:
            begin
              case Abs(rcTmp.Top - Top) < SnapWidth of
                True:
                  rcWnd.Top := Top;
              end;
              case Abs(rcTmp.Top - Bottom) < SnapWidth of
                True:
                  rcWnd.Top := Bottom;
              end;
            end;

            WMSZ_BOTTOM, WMSZ_BOTTOMLEFT, WMSZ_BOTTOMRIGHT:
            begin
              case Abs(rcTmp.Bottom - Top) < SnapWidth of
                True:
                  rcWnd.Bottom := Top;
              end;
              case Abs(rcTmp.Bottom - Bottom) < SnapWidth of
                True:
                  rcWnd.Bottom := Bottom;
              end;
            end;
          end;
        end;
      end;
    end; // end of "with m_rcWnd[lC] do"
  end; // end of "for lC := 0 to m_lWndCount do"
end;

procedure TMagnetic.pvMoveRect(Handle: HWND; var rcWnd: TRECT);
var
  lc1:   integer;
  lc2:   integer;
  lWId:  integer;
  rcTmp: TRECT;
  lOffx: integer;
  lOffy: integer;
  hDWP:  integer;

begin
  // Get current cursor position
  GetCursorPos(m_ptCurr);

  // Check magnetism for current window
  // 'Move' current window
  OffsetRect(rcWnd, (m_ptCurr.x - rcWnd.Left) + m_ptOffset.x, 0);
  OffsetRect(rcWnd, 0, (m_ptCurr.y - rcWnd.Top) + m_ptOffset.y);

  lOffx := 0;
  lOffy := 0;

  // Check all windows
  for lc1 := 0 to m_lWndCount do
  begin
    // Avoid hidden window
    if lC1 <> 0 then  // m_rcWnd[0] has the window rect of Desktop area
      if not IsWindowVisible(m_uWndInfo[lc1].h_wnd) then   // **************** Added
         continue;

    // Avoid current window
    if (m_uWndInfo[lc1].h_wnd <> Handle) then
    begin
      // Avoid child windows
      if (m_uWndInfo[lc1].Glue = False) or
        (m_uWndInfo[lc1].hWndParent <> Handle) then
      begin
        with m_rcWnd[lc1] do
        begin
          // X magnetism
          if (rcWnd.Top < Bottom + SnapWidth) and (rcWnd.Bottom > Top - SnapWidth) then
          begin
            case Abs(rcWnd.Left - Left) < SnapWidth of
              True:
                lOffx := Left - rcWnd.Left;
            end;
            case Abs(rcWnd.Left - Right) < SnapWidth of
              True:
                lOffx := Right - rcWnd.Left;
            end;
            case Abs(rcWnd.Right - Left) < SnapWidth of
              True:
                lOffx := Left - rcWnd.Right;
            end;
            case Abs(rcWnd.Right - Right) < SnapWidth of
              True:
                lOffx := Right - rcWnd.Right;
            end;
          end;

          // Y magnetism
          if (rcWnd.Left < Right + SnapWidth) and (rcWnd.Right > Left - SnapWidth) then
          begin
            case Abs(rcWnd.Top - Top) < SnapWidth of
              True:
                lOffy := Top - rcWnd.Top;
            end;
            case Abs(rcWnd.Top - Bottom) < SnapWidth of
              True:
                lOffy := Bottom - rcWnd.Top;
            end;
            case Abs(rcWnd.Bottom - Top) < SnapWidth of
              True:
                lOffy := Top - rcWnd.Bottom;
            end;
            case Abs(rcWnd.Bottom - Bottom) < SnapWidth of
              True:
                lOffy := Bottom - rcWnd.Bottom;
            end;
          end;
        end;
      end;
    end;
  end;

  // Check magnetism for child windows
  for lc1 := 1 to m_lWndCount do
  begin
    // Avoid hidden window
    if not IsWindowVisible(m_uWndInfo[lc1].h_wnd) then   // **************** Added
       continue;

    // Child and connected window ?
    if (m_uWndInfo[lc1].Glue) and (m_uWndInfo[lc1].hWndParent = Handle) then
    begin
      // 'Move' child window
      CopyMemory(@rcTmp, @m_rcWnd[lc1], LB_RECT);
      OffsetRect(rcTmp, m_ptCurr.x - m_ptAnchor.x, 0);
      OffsetRect(rcTmp, 0, m_ptCurr.y - m_ptAnchor.y);

      for lc2 := 0 to m_lWndCount do
      begin
        if (lc1 <> lc2) then
        begin
          // Avoid hidden window
          if not IsWindowVisible(m_uWndInfo[lc2].h_wnd) then   // **************** Added
             continue;

          // Avoid child windows
          if (m_uWndInfo[lc2].Glue = False) and
            (m_uWndInfo[lc2].h_wnd <> Handle) then
          begin
            with m_rcWnd[lc2] do
            begin
              // X magnetism
              if (rcTmp.Top < Bottom + SnapWidth) and
                (rcTmp.Bottom > Top - SnapWidth) then
              begin
                case Abs(rcTmp.Left - Left) < SnapWidth of
                  True:
                    lOffx := Left - rcTmp.Left;
                end;
                case Abs(rcTmp.Left - Right) < SnapWidth of
                  True:
                    lOffx := Right - rcTmp.Left;
                end;
                case Abs(rcTmp.Right - Left) < SnapWidth of
                  True:
                    lOffx := Left - rcTmp.Right;
                end;
                case Abs(rcTmp.Right - Right) < SnapWidth of
                  True:
                    lOffx := Right - rcTmp.Right;
                end;
              end;

              // Y magnetism
              if (rcTmp.Left < Right + SnapWidth) and
                (rcTmp.Right > Left - SnapWidth) then
              begin
                case Abs(rcTmp.Top - Top) < SnapWidth of
                  True:
                    lOffy := Top - rcTmp.Top;
                end;
                case Abs(rcTmp.Top - Bottom) < SnapWidth of
                  True:
                    lOffy := Bottom - rcTmp.Top;
                end;
                case Abs(rcTmp.Bottom - Top) < SnapWidth of
                  True:
                    lOffy := Top - rcTmp.Bottom;
                end;
                case Abs(rcTmp.Bottom - Bottom) < SnapWidth of
                  True:
                    lOffy := Bottom - rcTmp.Bottom;
                end;
              end;
            end;
          end;
        end;
      end;
    end;
  end;

  // Apply offsets
  OffsetRect(rcWnd, lOffx, lOffy);

  // Glueing (move child windows, if any)
  hDWP := BeginDeferWindowPos(1);

  for lc1 := 1 to m_lWndCount do
  begin
    // Avoid hidden window
    if not IsWindowVisible(m_uWndInfo[lc1].h_wnd) then   // **************** Added
       continue;

    with m_uWndInfo[lc1] do
      // Is parent our current window ?
      if (hWndParent = Handle) and (Glue) then
      begin
        // Move 'child' window
        lWId := pvWndGetInfoIndex(Handle);
        with m_rcWnd[lc1] do
          DeferWindowPos(hDWP, m_uWndInfo[lc1].h_wnd, 0,
                         Left - (m_rcWnd[lWId].Left - rcWnd.Left),
                         Top - (m_rcWnd[lWId].Top - rcWnd.Top),
                         0{width}, 0{height},  // No size change
                         SWP_NOACTIVATE or SWP_NOSIZE or SWP_NOZORDER);
      end;
  end;


  EndDeferWindowPos(hDWP);
  // Store last cursor position
  m_ptLast := m_ptCurr;
end;

procedure TMagnetic.pvCheckGlueing;
var
  lcMain: integer;
  lc1:    integer;
  lc2:    integer;
  lWId:   integer;
begin
  // Get all windows rectangles / Reset glueing
  for lc1 := 1 to m_lWndCount do
  begin
    GetWindowRect(m_uWndInfo[lc1].h_wnd, m_rcWnd[lc1]);
    m_uWndInfo[lc1].Glue := False;
  end;

  // Check direct connection
  for lc1 := 1 to m_lWndCount do
  begin
    if not IsWindowVisible(m_uWndInfo[lc1].h_wnd) then   // **************** Added
       continue;

    if (m_uWndInfo[lc1].hWndParent <> 0) then
    begin
      // Get parent window info index
      lWId := pvWndParentGetInfoIndex(m_uWndInfo[lc1].hWndParent);
      // Connected ?
      m_uWndInfo[lc1].Glue := pvWndsConnected(m_rcWnd[lWId], m_rcWnd[lc1]);
    end;
  end;

  // Check indirect connection
  for lcMain := 1 to m_lWndCount do  // to check the windows snapped far lower level
  begin                              //  in multi-layer snapped structure
    for lc1 := 1 to m_lWndCount do
    begin
      // Avoid hidden window
      if not IsWindowVisible(m_uWndInfo[lc1].h_wnd) then   // **************** Added
         continue;

      if (m_uWndInfo[lc1].Glue) then
      begin
        for lc2 := 1 to m_lWndCount do
        begin
          // Avoid hidden window
          if not IsWindowVisible(m_uWndInfo[lc2].h_wnd) then   // **************** Added
             continue;
          if (lc1 <> lc2) then
          begin
            if (m_uWndInfo[lc1].hWndParent = m_uWndInfo[lc2].hWndParent) then
            begin
              // Connected ?
              if (m_uWndInfo[lc2].Glue = False) then
                  m_uWndInfo[lc2].Glue := pvWndsConnected(m_rcWnd[lc1], m_rcWnd[lc2]);
            end;
          end;
        end;  // end of for lc2
      end;
    end;   // end of for lc1
  end;   // end of for lcMain

end;

function TMagnetic.pvWndsConnected(rcWnd1: TRECT; rcWnd2: TRECT): boolean;
var
  rcUnion: TRECT;
begin
  result := false;  // assume not connected

  // Calc. union rectangle of windows
  UnionRect(rcUnion, rcWnd1, rcWnd2);

  // Bounding glue-rectangle
  if ((rcUnion.Right - rcUnion.Left) <= (rcWnd1.Right - rcWnd1.Left) +
    (rcWnd2.Right - rcWnd2.Left)) and ((rcUnion.Bottom - rcUnion.Top) <=
    (rcWnd1.Bottom - rcWnd1.Top) + (rcWnd2.Bottom - rcWnd2.Top)) then
  begin
    // Edge coincidences ?
    if (rcWnd1.Left = rcWnd2.Left) or (rcWnd1.Left = rcWnd2.Right) or
      (rcWnd1.Right = rcWnd2.Left) or (rcWnd1.Right = rcWnd2.Right) or
      (rcWnd1.Top = rcWnd2.Top) or (rcWnd1.Top = rcWnd2.Bottom) or
      (rcWnd1.Bottom = rcWnd2.Top) or (rcWnd1.Bottom = rcWnd2.Bottom) then

      pvWndsConnected := True;
  end;
end;

function TMagnetic.pvWndGetInfoIndex(Handle: HWND): integer;
var
  lC: integer;

begin
  result := -1;   // assume no matched item

  for lC := 1 to m_lWndCount do
  begin
    if (m_uWndInfo[lC].h_wnd = Handle) then
    begin
      pvWndGetInfoIndex := lC;
      break;
    end;
  end;
end;

function TMagnetic.pvWndParentGetInfoIndex(hWndParent: HWND): integer;
var
  lC: integer;
begin
  result := -1;   // assume no matched item

  for lC := 1 to m_lWndCount do
  begin
    if (m_uWndInfo[lC].h_wnd = hWndParent) then
    begin
      pvWndParentGetInfoIndex := lC;
      Break;
    end;
  end;
end;


end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲av在线| 成人免费三级在线| 久久久国际精品| 欧美偷拍一区二区| 国产精品一区在线观看乱码| 国产精品美女久久久久aⅴ| 色婷婷久久久综合中文字幕| 日本网站在线观看一区二区三区 | 婷婷六月综合亚洲| 国产精品短视频| 日韩一区二区三区在线| 成人app在线观看| 青娱乐精品在线视频| 亚洲色图欧美激情| 国产日韩影视精品| 日韩欧美久久一区| 日韩一区二区三区高清免费看看| 成人深夜视频在线观看| 精品在线观看免费| 免费观看在线综合色| 日本成人中文字幕在线视频| 亚洲一区欧美一区| 亚洲福中文字幕伊人影院| 夜夜爽夜夜爽精品视频| 亚洲宅男天堂在线观看无病毒| 日韩理论片在线| 一区二区三区四区乱视频| 午夜影院久久久| 在线看一区二区| 一区二区三区高清在线| 亚洲精品免费播放| 日韩精彩视频在线观看| 麻豆一区二区三区| 日韩av午夜在线观看| 精品亚洲aⅴ乱码一区二区三区| 国产乱色国产精品免费视频| 中文字幕一区不卡| 男人操女人的视频在线观看欧美| 在线精品视频一区二区三四| 欧美午夜影院一区| 国产精品日产欧美久久久久| 久久99精品国产| 欧美一级片在线| 免费一区二区视频| 日韩欧美在线观看一区二区三区| 一区二区三区中文在线| 中文一区二区在线观看| 精品美女一区二区三区| 中文字幕欧美日本乱码一线二线| 精品入口麻豆88视频| 国产女人aaa级久久久级| 中文字幕人成不卡一区| 一区二区三区精品久久久| 亚洲h在线观看| 国产经典欧美精品| 91农村精品一区二区在线| 欧美日韩高清一区二区三区| 久久久噜噜噜久噜久久综合| 亚洲乱码国产乱码精品精98午夜 | 国产亚洲1区2区3区| 成人欧美一区二区三区黑人麻豆 | 国产精品原创巨作av| 欧美日韩国产综合草草| 蜜臀91精品一区二区三区| 99这里只有久久精品视频| 国产视频一区二区三区在线观看| 肉丝袜脚交视频一区二区| 制服丝袜在线91| 另类小说欧美激情| 日韩精品一区二区三区三区免费| 日韩1区2区3区| 欧美成人精品3d动漫h| 激情图区综合网| 一区二区三区在线视频观看 | 欧美日韩成人高清| 亚洲国产一区二区三区| 欧美三级日韩三级| 久久狠狠亚洲综合| 中文字幕在线不卡视频| 91成人看片片| 国产精品羞羞答答xxdd| 亚洲欧美国产三级| 久久婷婷色综合| 91精品福利视频| 国产成人免费视频一区| 中文字幕av一区二区三区免费看| 色婷婷av一区二区三区大白胸| 一卡二卡三卡日韩欧美| 久久久久久久久免费| 日韩久久久精品| 国产成人福利片| 美女视频黄a大片欧美| 亚洲精品老司机| 亚洲综合色噜噜狠狠| 国产午夜精品久久久久久久| 色综合久久88色综合天天6| 91麻豆精品国产91久久久使用方法| 亚洲午夜久久久久久久久电影网 | 欧美色网站导航| 欧美成va人片在线观看| 国产精品国产自产拍高清av王其| 国产精品国产三级国产专播品爱网 | 91精品国产丝袜白色高跟鞋| 久久99久久99精品免视看婷婷 | 久久久久久97三级| 精品国产乱码久久久久久久久| 91精品在线一区二区| 777xxx欧美| 日韩一区二区三区视频在线 | 一区av在线播放| 日韩高清欧美激情| 日韩不卡一区二区| 国产一区二区三区高清播放| 国产九色sp调教91| 成人国产精品视频| 欧美日韩一区二区不卡| 精品国产精品一区二区夜夜嗨| 日韩欧美国产电影| 中文字幕字幕中文在线中不卡视频| 中文字幕av免费专区久久| 国产精品美女久久久久久 | 国产一区二区网址| 欧美性欧美巨大黑白大战| 91 com成人网| 8x8x8国产精品| 国产精品久久一级| 亚洲va在线va天堂| 成人免费av资源| 欧美不卡视频一区| 午夜精品福利一区二区三区蜜桃| 国产综合色产在线精品| 欧美高清性hdvideosex| 久久综合久色欧美综合狠狠| 视频一区中文字幕国产| 成人av在线一区二区| 欧美成人vps| 一片黄亚洲嫩模| 欧美色偷偷大香| 亚洲精品乱码久久久久| 成人黄色网址在线观看| 日韩欧美国产系列| 激情综合网激情| 日韩欧美中文字幕精品| 免费看精品久久片| 日韩欧美激情四射| 国产在线精品视频| 日本一区二区三级电影在线观看| 激情综合一区二区三区| 日韩精品一区二区三区视频 | 国产一区二区三区精品欧美日韩一区二区三区 | 久久欧美中文字幕| 国产suv精品一区二区883| 欧美国产精品一区| 欧美日韩国产另类不卡| 毛片基地黄久久久久久天堂| 国产精品乱人伦| 欧美综合一区二区| 国产91丝袜在线观看| 亚洲第一福利视频在线| 国产精品大尺度| 久久久美女毛片| 欧美一级日韩不卡播放免费| 色视频成人在线观看免| 国内精品伊人久久久久影院对白| 亚洲永久免费视频| 亚洲欧美怡红院| 久久夜色精品一区| 欧美mv和日韩mv国产网站| 欧美日本韩国一区| 欧美视频中文字幕| 欧美日韩一级黄| 久久99热国产| 亚洲特级片在线| 欧美哺乳videos| 欧洲另类一二三四区| 国产成人午夜精品5599| 一区二区三区小说| 欧美高清在线一区二区| 欧美一级视频精品观看| 一本久久精品一区二区| 激情综合五月天| 青青青爽久久午夜综合久久午夜| 欧美国产精品劲爆| www精品美女久久久tv| 欧美另类z0zxhd电影| 91丨porny丨蝌蚪视频| 成人精品免费网站| 国产一区二区三区四区五区美女 | 日本精品视频一区二区三区| 成人综合婷婷国产精品久久免费| 蜜桃在线一区二区三区| 亚洲国产一区二区视频| 一区二区三区四区国产精品| 中文字幕一区二区三区在线播放| 久久久不卡影院| 国产欧美日韩精品在线| 国产精品素人一区二区| 国产精品成人一区二区艾草| 亚洲乱码日产精品bd| 亚洲午夜精品17c|