选择图标

下载executable - 9.0 Kb
下载project - 35.0 Kb
下载source only - 4.0 Kb

介绍
本文的介绍是:“一旦开发向导程序我需要一个对话框来选择一个图标从可执行文件,但没有发现任何关于图标选择在MSDN。所以我有搜索图标选择CodeProject上,发现两篇文章。第一个解决方案,通过PJ零(文章CIconDialog -图标选择对话框),使用CDialog派生类模板对话框资源选择对话框显示图标和处理它的行为,第二,Henk•狄维士(如何显示条选择图标对话框),使用非法Windows API函数来显示系统内置的图标选择对话框。我更喜欢使用Windows API即使非法拖资源,所以写了一个很小的类,可用来包装Henk狄维士发布的API。
但现在这是二十一世纪甚至无证功能成为记录。最后微软包括函数名我们进口的序数62二5.0出口。它的名字叫PickIconDlg只有UNICODE版本可以从Windows 2000。但是兼容性我们应该进口的顺序使用Windows NT4.0下,Windows 95/98和我使用ANSI在Windows 2000或更高版本。
示例使用
CIconDialog来源于CCommonDialog,就像任何普通对话框。看到示例用法:隐藏,收缩,复制Code//
#ifndef ICONDLG_H
#include “IconDialog.h”
#endif
//…
void CSomeDialog::OnSomeBtnClicked( void )
{
// If icon container file is not specified in the parameter
// then by default it will open Shell32.dll file:
// CIconDialog dlg( NULL, 0, this );
//
// You can specify any initial file name and icon index ( if exist ).
// In this case it will open index + 1 icon
// ( index is 0 - based ) selected:

CIconDialog dlg( _T( "%SystemRoot%\\system32\\SHELL32.dll" ), 
    148, this );

if( dlg.DoModal() == IDOK  )
{
    HICON hIcon = dlg.GetIconHandle();
    SetIcon( hIcon, FALSE );

    // Or:
    // HICON hIcon = ::ExtractIcon( AfxGetInstanceHandle(), 
    //          dlg.GetIconFile(), dlg.GetIconIndex() );
}

}
//…
看到演示项目来源。

类成员
基类

CCommonDialog
数据成员

m_szIconFile——指定文件名称的图标。
m_dwIconIndex指数——指定图标。
m_hIconHandle -包含图标处理(最后打开)。
m_uIconCount——在一个文件图标数。
建设
构造一个CIconDialog对象。
CIconDialog (LPCTSTR lpszIconFile = NULL, DWORD dwIconIndex = 0, CWnd * pParentWnd = NULL)

lpszIconFile——最初的图标库的图标应该在对话框中打开。
dwIconIndex图标指数最初时选择的对话框打开。
pParentWnd——一个指针指向文件对话框对象的父母或所有者窗口。
操作

DoModal(空白)——显示对话框,允许用户选择。
GetIconHandle (void) const -返回最后的处理选择的图标。
GetIconCount(空白)const -返回图标数选择的图标文件。
GetIconIndex(空白)const -返回的索引选择图标。
GetIconFile(空白)const -返回选中的图标文件的完整路径。
笔记
这个类编译在4级没有任何警告,并完全支持ANSI和UNICODE。
版本需求
最后微软包括支持API函数这类使用二5.0或更高版本。所以我们没有问题下失踪的顺序使用这个类的:

Windows 2000 Pro /服务器- NT 5.0.2195 / SP1 / SP2和SP3 / SP4
Windows XP专业- NT 5.1.2600 / SP1
Windows 2003 Server - NT 5.2标准/企业/数据中心/ Web版
而进口的顺序,这类测试,跑下正确:

Windows 95 OSR2——4.00.950B
Windows 98 - 4.10.1998
Windows 98 SE - 4.10.2222A(第二版)
Windows Me - 4.90.3000
Windows NT 4.0工作站与SP - NT 4.0.1381 6我
这不是测试(尽管预期正常运行):

Windows 95 - 4.00.950
Windows 95 SP1——4.00.950A
Windows 95 OSR 2.5 - 4.00.950C
Windows NT 4.0工作站- NT 4.0.1381 SP1-SP5
Windows NT 4.0服务器- NT 4.0.1381 SP1-SP6i
如果有人在上述测试版本的Windows,请回复。
版本历史

2002年3月27日发布了这篇文章。
2002年11月04 -添加支持MFC 6.0和7.0,一些代码更改。
2003年5月24日——有些代码更改。——添加更详细的版本支持。
2004年3月29日,添加新的PickIconDlg函数信息。

本文转载于:http://www.diyabc.com/frontweb/news3599.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值