介绍 本文的介绍是:“一旦开发向导程序我需要一个对话框来选择一个图标从可执行文件,但没有发现任何关于图标选择在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