国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

實現QQ窗體的縮入伸出功能

2019-11-18 18:05:32
字體:
來源:轉載
供稿:網友
 

不知道大家在使用QQ時有沒有想到它的縮入伸出的功能是如何實現的呢?實現這個效果的關鍵在于如何判斷當前鼠標指針下面的窗體是不是我們的程序窗體。GetCursorPos()是一個可以獲得鼠標指針在屏幕中的坐標的API函數,利用它與FindVCLWindow()的結合就可以輕易地獲得鼠標指針下的VCL可視組件,但當一個窗體中不只一個VCL可視組件,例如可能還有TPanel、TMemo等等類型時,那么我們就必須要查找到它們的Parent級,最終得到TForm,那就是指我們的程序窗體。按照這個思路我自定義了GetFormNameAt()函數,它可獲得當前鼠標指針下面的窗體的名稱。以下列出程序的主要實現代碼,供大家參考:(由書生整理,Win2000+Delphi測試通過)
//自定義函數GetFormNameAt,獲得鼠標針指下窗體的Name
function GetFormNameAt ( X, Y : integer ) : string;
var
   P:TPoint;
   W:TWinControl;
begin
   P.X := X;
   P.Y := Y;
   W := FindVCLWindow(P); //得到鼠標指針下的VCL可視組件
   if ( nil <> W ) then
   begin
      while w.Parent<>nil do //當W的上級Parent不為空時就繼續往上找
        w:=w.Parent;
      Result := W.Name;//最后返回窗體的名稱Name
   end
   else
   begin
    Result := ’’;
   end;
end;

PRocedure TForm1.Timer1Timer(Sender: TObject);
var
   winPos:TPoint;
begin
if (form1.Top<=3) or (form1.Left>=screen.Width-form1.Width-3) then //判斷
begin
   GetCursorPos(winpos);  //得到當前鼠標指針的在屏幕上的坐標

   //當鼠標指針下的窗體的Name等于form1.name時
   if form1.name=GetFormNameAt(winpos.X,winpos.Y) then
   {在此我們可以為form1取一個特別的名稱,以防有別的窗體名稱與它相同}
   begin
    form1.Timer2.Enabled:=false; //停用Timer2
    form1.Top:=0;  //form1的Top與屏幕對齊
   end
   else
    form1.Timer2.Enabled:=true; //開啟Timer2
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
   if form1.Top<=20 then
      form1.Top:=-(form1.Height-10);//將form1向上移,在屏幕上方露出10像素
end;


上一篇:singleton之我見

下一篇:如何判斷一個機器的MSSQL是否啟動

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 米林县| 洛扎县| 木兰县| 澜沧| 东乡族自治县| 绥阳县| 靖远县| 巍山| 景泰县| 甘肃省| 镇江市| 抚宁县| 四子王旗| 嘉义市| 武胜县| 芜湖县| 汨罗市| 灵台县| 元江| 庆城县| 青铜峡市| 清水县| 梓潼县| 赞皇县| 太仆寺旗| 旬阳县| 公安县| 靖江市| 达日县| 自治县| 沧州市| 关岭| 遂平县| 博野县| 全南县| 左贡县| 任丘市| 英超| 南投县| 南宁市| 镇巴县|