51CTO技术论坛_中国领先的IT技术社区's Archiver

黑夜 发表于 2006-8-29 01:13

用C++Builder获取应用程序图标

现在,网上有大量的有关图标的共享软件或免费软件,而且很多也很好用,也方便。但是那毕竟是别人的,用起来总有些哪个,况且自己又喜欢编程,何不自己动手呢!说干就干,而且手头上有可视化编成的利器――C++ Builder4.0,想来应该是很简单的一件事。 ^mhN1[

(rB#oP%O-cGR 首先启动C++Builder,新建一工程,在窗体上放置一个Button控件,一个Image控件,和一个OpenDialog控件,它们的名称均不必改动。双击Button控件,写如下代码: L0cEzR|T
p&{$yAj _r.y
if(OpenDialog1->Execute()) 3\C-~ w;lur
{ d&XWiH2`dS Uq
FileName = OpenDialog1->FileName;
1U&{'?O8LR ])fo HICON hIcon;
"f h4U:\2{*K // Total =(int) ExtractIcon( Form1->Handle, FileName.c_str(), -1); 5kwQd&H$GqLpE
Icon = new TIcon(); 9kJQ-o`_8{
hIcon = ExtractIcon( Form1->Handle, FileName.c_str(), 0); e~ _g0mt!J,m"d
Icon->Handle=hIcon;
6Y5i0e9s z Icon->SaveToFile(TempFile);
7Nu9E E#y^ n Image1->Picture->LoadFromFile(TempFile); !S7yH]u8}X,s
} QZ[l2^'i6a
T uG/FC1P
其中:FileName,TempFile,Icon在其头文件中定义:
vu'P`$y*Lu AnsiString  TempFile, FileName; p3gfJ7W+r
Ticon *Icon;
-c#Y8kFR({rM
C+vl*]"t,@u 这样,你所选定的程序的第一个图标就在Image控件中显示了出来。本程序所用的是Windows API ExtractIcon来获取图表的,因此它只能获取可执行文件的图标,如果想获取任意文件的图标,那末你可以调用Windows API 的SHGetFileInfo函数来完成,SHGetFileInfo所能完成的任务有很多,具体用法可参见Win32的帮助文件。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.