MFC/Windows编程之个性化图标

我们发现向导生成的MFC程序生成的桌面上(资源管理器上)的.exe文件和运行时标题栏上(最小化时任务栏上)的图标都是一样,实际上我们可以为它们配置不同的图标。实际上vc默认的那个MFC的图标(本案例中的Test.ico)是一个ID号对应了2个图标,一个16×16的一个32×32的。一个16×16的小图标是用于标题栏和最小化时任务栏的。另一个32×32的大图标则是用于桌面和资源管理器的。故我们可以为应用程序再添加一个与默认图标大小不同的.ico文件.

以下为MFC向导生成的窗口(标题已改)  

以下为生成的.EXE文件在资源管理器中的缩略图:

以下为项目的资源res文件夹:

一.个性化图标

 (1)为应用实例添加光标资源

右击解决方案资源管理器中的资源文件-〉添加-〉资源-〉选择Icon资源类型-〉若选“导入”则可以从导入硬盘中已有的ICON文件;若选“新建” 则打开资源编辑器,自己绘制图标。这里我们选择导入我们收藏的ICON文件,一个黄纸飞机IDI_ICON1和一个红纸飞机IDI_ICON2

我们在这里先将这两个图标通过CDCDrawIcon函数在窗口中绘制出来。

void CEX041View::OnDraw(CDC* pDC)

{

    // TODO: 在此处为本机数据添加绘制代码

    HICON hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);

    pDC->DrawIcon(0,0,hIcon);

    DestroyIcon(hIcon);

 

    hIcon=AfxGetApp()->LoadIcon(IDI_ICON2);

    pDC->DrawIcon(50,0,hIcon);

    DestroyIcon(hIcon);

} 

(2)为应用程序实例加载光标资源,并为主窗口设置指定的图标。

使用CWinApp::LoadIconCWnd::SetIcon加载图标。

1CWinApp::LoadIcon
HICON LoadIcon( UINT nIDResource ) const;

参数nIDResource为图标资源的ID

2CWnd::SetIcon
HICON SetIcon( HICON hIcon, BOOL bBigIcon );
参数hIcon为以前图标的句柄。

参数bBigIcon,如果为TRUE,则指定了32×32像素的图标;如果为FALSE,则指定了16×16像素的图标。 BOOL CTestApp::InitInstance()中添加代码。

   <1> m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),FALSE);// 设置窗口的小图标

   m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),TRUE);   //设置窗口的大图标

结果标题栏显示为IDI_ICON1,但是资源管理器中的.EXE文件依然为默认MFC图标。

<2>m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),TRUE);// 设置窗口的大图标

   m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),FALSE);  //设置窗口的小图标

结果标题栏显示为IDI_ICON2,但是资源管理器中的.EXE文件依然为默认MFC图标。

<1><2>说明当2BOOL bBigIcon的值不同时,选择BOOL bBigIcon的值为FALSE的图标作为窗口标题栏图标。

<3> m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),TRUE);//设置窗口的大图标

    m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),TRUE);// 设置窗口的大图标

结果标题栏显示为IDI_ICON1,但是资源管理器中的.EXE文件依然为默认MFC图标。

<4>m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),TRUE);//设置窗口的大图标

   m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),TRUE);// 设置窗口的大图标

结果标题栏显示为IDI_ICON2,但是资源管理器中的.EXE文件依然为默认MFC图标。

3><4>说明当2BOOL bBigIcon的值同为TRUE时时,选择后一个作为窗口标题栏图标。

<5>m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),FALSE);//设置窗口的小图标

   m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),FALSE);// 设置窗口的小图标

结果标题栏显示为IDI_ICON2,但是资源管理器中的.EXE文件依然为默认MFC图标。

<6>m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),FALSE);// 设置窗口的小图标

   m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),FALSE);//设置窗口的小图标

结果标题栏显示为IDI_ICON1,但是资源管理器中的.EXE文件依然为默认MFC图标。

以下为ICON1作为窗口图标效果:

以下为ICON2作为窗口图标效果:

<5><6>说明当2BOOL bBigIcon的值同为FALSE时,选择后一个作为窗口标题栏图标。

(3)用替代法为资源管理器中的.EXE文件更改图标。

我们可以将一个图标Sina.ICO移动到...\Visual Studio 2005\Projects\EX041\EX041\res,然后将原来的MFC默认图标EX041.ico重命名为Test1.ico,将Sina.ICO重命名为Test.ico,则资源管理器中的.EXE文件即设置为我们所要的图标。

以下为项目的资源res文件夹:

以下为生成的.EXE文件在资源管理器中的缩略图:

posted on 2008-04-28 15:46 wrh 阅读(2274) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


导航

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

统计

常用链接

留言簿(19)

随笔档案

文章档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜