• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        玩轉Windows桌面圖標

        玩轉Windows桌面圖標

        更新時間:2022-04-29 文章作者:未知 信息來源:網絡 閱讀次數:

        大家一定和我一樣對Windows的桌面十分不滿意吧。那就拿起手術刀(Delphi)給它動動手術。
        首先要對付的是桌面圖標那一個個難看的、帶有背景色的文字,不僅看上去別扭,還遮住了漂亮的墻紙,一定要去掉它,把它變成透明。其次就是圖標的位置,只會傻傻地呆在屏幕的左邊,還得我們一個個去拖,真累!給它來點新花樣,Please Follow Me!

        1、 新建一工程,在 uses 中加入 CommCtrl 單元,窗體上加一個按鈕;

        2、 聲明一個取得桌面句柄的函數:

        function TForm1.GetDesktopHand: THandle;

        begin

        Result:=FindWindow('progman',nil);

        Result:=GetWindow(Result,GW_Child);

        Result:=GetWindow(Result,GW_Child);

        end;


        3、 聲明一個設置圖標文字顏色的過程:

        procedure TForm1.SetTextColor(ForeClr, BackClr: TColor);

        var Hand: THandle;

        begin

        Hand:= GetDesktopHand;

        Listview_SetTextColor(Hand,ForeClr); // 設置文字前景色;

        Listview_SetTextBkColor(Hand,BackClr); // 設置文字背景色,crNone 為透明;

        Listview_RedrawItems(Hand,0,Listview_GetItemCount(Hand)); // 重畫;

        end;



        有了上面的兩個方法,你已經可以對桌面動小手術了。下面介紹圖標的排列方式。


        4、 以屏幕的中心為圓點作圓形排列:

        procedure TForm1.Circle(r: integer); // 形參 r 為半徑;

        var

        i, Count, CenterX, CenterY, TempR :integer;

        Hand: THandle;

        Radian: double;

        TempRect: TRect;

        DesktopHeight,DesktopWidth :integer;

        X, Y : Word;

        begin

        Hand:=GetDesktopHand;

        SystemParametersInfo(SPI_GetWorkArea,0,@TempRect,0); // 取得工作區域;

        DesktopWidth:=TempRect.Right - TempRect.Left; // 工作區的寬(即屏幕的寬);

        DesktopHeight:= TempRect.Bottom - TempRect.Top; // 工作區的高(即屏幕的高);

        CenterX:=DesktopWidth div 2; // 取得圓心 X 坐標;

        CenterY:=DesktopHeight div 2; // 圓心 Y 坐標;

        if CenterX>CenterY then

        TempR:=CenterY

        else

        TempR:=CenterX;

        if r>TempR then r:=TempR; // 半徑不能超過屏幕中心點到四邊的最短距離;

        Count:=Listview_GetItemCount(Hand); // 桌面上圖標個數;

        Radian:=2*3.14159/Count; // 相鄰圖標間的弧度; for i:=0 to Count-1 do

        begin

        // 第一個圖標排在正上方;

        X:=Integer(CenterX+Trunc(r*Sin(i*Radian))); // 圖標的X坐標;

        Y:=Integer(CenterY+Trunc(r*Cos(i*Radian))); // 圖標的Y坐標;

        SendMessage(Hand,LVM_SetItemPosition,i,MakeLparam(X, y)); // 設置坐標;

        end;

        end;



        5、 圖標右對齊:

        procedure AlignRight(Rec: Integer); // 形參 Rec 為一個圖標所占區域大小,一般為77;

        var Hand: THandle;

        h, I, j, DesktopHight, DesktopWidth :integer;

        TempRect : TRect;

        Begin

        Hand:=GetDesktopHand;

        SystemParametersInfo(SPI_GetWorkArea,0,@TempRect,0); // 取得工作區域;

        DesktopWidth:=TempRect.Right - TempRect.Left; // 工作區的寬(即屏幕的寬);

        DesktopHeight:= TempRect.Bottom - TempRect.Top; // 工作區的高(即屏幕的高);

        I:=0; // 圖標所排的列數

        J:=0;

        For h:=0 to Listview_GetItemCount(Hand)-1 do

        Begin

        Inc(j);

        If j*rec>DesktopHeight then // 排完一列;

        Begin

        Inc(i); // 換列

        J:=1;

        End;

        SendMessage(Hand,LVM_SetItemPosition,h,

        MakeLparam(DesktopWidth-Rec*(I+1),Rec*(j-1));

        End; // for 循環結束;

        End;



        6、 在按鈕的單擊事件中加入代碼:

        procedure TForm1.Button1Click(Sender: TObject);

        begin

        SetTextColor(clBlack,crNone); // 設置圖標文字顏色;

        Circle(200); // 把圖標排列成半徑為200的圓;

        // AlignRight(77); // 右對齊;

        end;



        編譯運行,單擊按鈕。哇塞!太棒了!你還可發揮你的想象力,對程序稍加改進,把圖標排成蛇形、橢圓形、環形等等。以上程序在 Win98+Delphi5下運行通過。 

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲 日韩经典 中文字幕| 亚洲精品国产成人片| 亚洲人成网站看在线播放| **俄罗斯毛片免费| 91亚洲国产成人久久精品网站 | 亚洲日本中文字幕| 久久国产乱子伦精品免费看| 亚洲国产a∨无码中文777| 野花香高清在线观看视频播放免费| 国产亚洲精品a在线观看| 国产日韩久久免费影院| 亚洲午夜未满十八勿入网站2| 国产一级a毛一级a看免费人娇 | 久久久久久亚洲精品不卡| 国产精品美女久久久免费| 日韩亚洲产在线观看| 国产在线a免费观看| 亚洲大成色www永久网址| 热99re久久免费视精品频软件 | 高清永久免费观看| 自拍偷自拍亚洲精品被多人伦好爽 | 欧美好看的免费电影在线观看| 亚洲色大成网站www久久九| 日本不卡免费新一二三区| 一级做a爱过程免费视| 狠狠色伊人亚洲综合成人| 亚洲香蕉免费有线视频| 伊人久久五月丁香综合中文亚洲 | 日本高清免费不卡在线| 尤物视频在线免费观看| 亚洲人成影院在线| 成人黄页网站免费观看大全 | 最近免费中文字幕mv在线电影| 亚洲一区欧洲一区| 国产偷国产偷亚洲高清日韩| 久久国产乱子伦免费精品| 亚洲爆乳无码专区www| 国产亚洲综合一区柠檬导航| 在线观看AV片永久免费| 国产JIZZ中国JIZZ免费看| 亚洲国产成人精品电影|