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

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

        用C++ Builder取得應用程序圖標

        用C++ Builder取得應用程序圖標

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

        文/王斌

          我們經常在網上看到有關提取圖標的共享軟件或免費軟件。喜歡編程的朋友們都在夢想自己能夠動手做一個!使用可視化編程利器C++Builder可使你制作這樣的軟件變得非常輕松。

          建立工程文件

          
          首先啟動C++Builder,新建一工程,在窗體上放置兩個控件:“抽取”按鈕SpeedButton1、“退出”按鈕SpeedButton2。設一個ListView控件用來瀏覽抽取的圖表信息、一個Image控件用來顯示當前的圖標信息和一個OpenDialog控件用來打開被選文件,它們的名稱均不必改動。為了美觀,讀者還可以根據需要增加其它控件,做適當的潤色。

          取得和顯示圖標

          雙擊SpeedButton控件,在Click事件中寫如下代碼:

           void_fastcall TForm1::SpeedButton1Click(TObject

          Sender)

          {

           TListItemLst;

           if(OpenDialog1->Execute())

          //打開被提取圖標的文件

           {

           FileName=OpenDialog1->FileName;

           FileName=FileName.UpperCase();

           TempFile=FileName.SubString(1,FileName.AnsiPos("."))+"ICO";

          //產生和備選文件同名的Ico圖標文件名

           HICON hIcon; //定義抽取的圖標句柄

           int Total =(int) ExtractIcon( Form1->Handle, FileName.c_str(), -1);

           //抽取圖標:-1表示抽取所有圖標并且將獲得的圖標總數存入變量Total

           ListView1->Items->Clear();

           ImageList1->Clear();

           for(int i=0;i {

           Icon = new TIcon();

           hIcon = ExtractIcon( Form1->Handle, FileName.c_str(),i);

           Icon->Handle=hIcon;

           ImageList1->AddIcon(Icon);

           Lst=ListView1->Items->Add();

           Lst->Caption="第"+IntToStr(i)+"號圖標";

           Lst->ImageIndex=i;

           }

           if(Total>0)

           {

           Icon->SaveToFile(TempFile);

          //將最后一個圖標存入文件

           Image1->Picture->LoadFromFile(TempFile); //將存入文件的圖標顯示

           }

           }

          }

          以下為退出按鈕設置

           void_fastcall TForm1::SpeedButton2Click(TObjectSender)

          {

           Close();

          }

          在編輯文檔的頭文件中定義:AnsiString TempFile,FileName;TiconIcon;運行程序時,你所選定的程序的全部圖標就在ListView控件中顯示出來,最后一個圖標在Image控件中顯示出來,此時如果在ListView中單擊圖標,相應的信息也將在Image控件中顯示。

          經過以上的操作,被選文件的圖標信息就被顯示出來了。下面,我們討論如何存儲被選定的圖標。

          存儲圖標

          為了不影響整個界面的美觀,我們在Form上建立一個快捷選單,并在“存儲圖標”的Click事件中書寫如下代碼:

          void_fastcall TForm1::N1Click(TObjectSender)

          {

           if (InputQuery("提示信息", "存儲文件名:", PutFile)) //彈出輸入對話框

           {

           if (PutFile.Length()>0)

           {

           if(PutFile.AnsiPos(".")<=0)

           {

           PutFile=PutFile+".Ico" ;

           }

           if(ListView1->Selected!=NULL)

           {

           HICON hIcon;

           Icon = new TIcon();

          hIcon=ExtractIcon(Form1->Handle,FileName.c_str(),ListView1->Selected->Index);

           Icon->Handle=hIcon;

           Icon->SaveToFile(PutFile);

           Image1->Picture->LoadFromFile(PutFile);

           delete Icon;

           }

           }

           }

          }

          Windows下的執行文件,大部分都是資源信息與應用代碼單獨存放的,從這些資源文件中抽取圖標信息只是很小的一個實例。如果要獲取更多的信息,就需要調用API函數SHGetFileInfo。有興趣的朋友可以用本文類似的思路進行更深一步的探討,我想,編寫一個漢化軟件并非難事。

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 精品国产免费观看久久久| 99爱在线观看免费完整版| 免费涩涩在线视频网| 亚洲国产综合精品中文第一| 久久久久久曰本AV免费免费| 亚洲精品国产肉丝袜久久| 免费A级毛片无码A∨| 精品亚洲aⅴ在线观看| 久9热免费精品视频在线观看| 亚洲精品无码乱码成人| 毛片在线播放免费观看| 亚洲高清视频在线观看| 19禁啪啪无遮挡免费网站| 亚洲国产精品久久网午夜 | 亚洲一区二区三区播放在线| 在线视频免费观看高清| 亚洲人成电影网站色www| 四虎国产精品免费久久影院| 精品国产呦系列在线观看免费| 中文字幕精品亚洲无线码一区 | 亚洲乱码国产乱码精品精| 久久青草免费91线频观看站街| 久久亚洲私人国产精品vA | 国产AV无码专区亚洲A∨毛片| 污污网站18禁在线永久免费观看| 综合自拍亚洲综合图不卡区| 免费一本色道久久一区| 国产精品亚洲专区无码不卡| 中文字幕精品亚洲无线码二区| 最近新韩国日本免费观看| 亚洲乱码中文字幕在线| 亚洲国产免费综合| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 亚洲网站在线播放| 在线观看亚洲免费视频| 国产福利免费视频| 亚洲人成伊人成综合网久久| 亚洲电影日韩精品| 免费观看无遮挡www的小视频| 国产亚洲精品美女久久久久| 亚洲国产精品一区第二页|