api技巧集(四)之2

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

下面给出一个完整的图标提取程序源码。

这个程序需要四个按钮控件(Button)、四个文本标签控件(Label)、两个文本框控件(Edit)、一个水平滚动条控件(ScrollBar)、一个打开文件对话框控件(OpenDialog)、一个保存文件对话框控件(SaveDialog)和一个图片控件(Image),还有一个Panel控件是装饰用的。界面如图所示:

把各个控件排列好,再把四个Label控件的Caption属性修改一个,最后输入程序代码,运行程序,一个提取图标的程序就出来了,你以后也就不会为没有图标资源可用而发愁了。

程序清单(Unit1.cpp):

//----------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//----------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

AnsiString FileName;

TIcon *Icon = new TIcon();

int TotalIcon;

//----------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//----------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Caption="图标小偷 1.0";

Button1->Caption="选择文件";

Button2->Caption="保存图标";

Button3->Caption="保存所有";

Button4->Caption="退出";

Edit1->Text=0;

Edit2->Text=0;

Image1->Width=32;

Image1->Height=32;

OpenDialog1->Filter="可执行文件(*.exe,*.dll)|*.exe;*.dll|图标文件(*.ico)|*.ico|所有文件(*.*)|*.*";

SaveDialog1->Filter="图标文件|*.ico";

ScrollBar1->Enabled=false;

Button2->Enabled=false;

Button3->Enabled=false;

}

//----------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if(OpenDialog1->Execute())

{

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

if(TotalIcon>0)

{

if(TotalIcon<2)

ScrollBar1->Enabled=false;

else

ScrollBar1->Max=TotalIcon-1;

Button2->Enabled=true;

Button3->Enabled=true;

FileName = OpenDialog1->FileName;

Edit1->Text =TotalIcon;

Icon->Handle = ExtractIcon( Form1->Handle, FileName.c_str(), 0);

Image1->Picture->Icon=Icon;

Edit2->Text=1;

}

else

{

ShowMessage("该文件没有图标");

}

}

}

//----------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

if(SaveDialog1->Execute())

{

//保存图标

Icon->SaveToFile( SaveDialog1->FileName);

}

}

//----------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

if(SaveDialog1->Execute())

//提取所有的图标

for(int i=0;i<TotalIcon-1;i++)

{

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

Icon->SaveToFile(SaveDialog1->FileName+(AnsiString)i+".ico");

}

}

//----------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

Close();

}

//----------------------------------------------------------------

void __fastcall TForm1::ScrollBar1Change(TObject *Sender)

{

Edit2->Text=ScrollBar1->Position+1;

Icon->Handle = ExtractIcon(Form1->Handle, FileName.c_str(),ScrollBar1->Position);

Image1->Picture->Icon=Icon;

}

//----------------------------------------------------------------

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航