Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16502354
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:24:15

下载本文示例代码
  在Windows中图标有四种,系统大图标、系统小图标、Shell大图标、Shell小图标。系统大图标供应用程序自身使用,比如在"关于"对话框中使用,当用户按下Alt Tab组合键时,也会显示系统大图标。系统小图标显示在程序窗口的左上角,Shell图标用于在资源管理器中显示。  一、 图标的获得  1、 自己设计  最直接的方法是在在资源设计器中设计一个图标,然后用LoadIamge()或LoadIcon()加载。也可以在程序运行的过程中创建图标,方法是填写一个ICONINFO结构(可以手工填,也可以调用GetIconInfo()函数填),然后调用CreateIconIndirect()获得一个HICON指针。  2、 捡现成的  使用CreateIconFromResourceEx()获取一个EXE或DLL文件中的图标。在一个EXE或DLL文件中有一个RT_GROUP_ICON图标目录,同时还有RT_GROUP_CURSOR鼠标目录,存放有多个图标或鼠标,分别适用于不同的显示设备,LookUpIconFromDirectoryEx()函数用来搜索图标目录,获得最适合当前显示设备的图标的ID,然后用MAKEINTRESOURCE宏将得到的图标ID转换成指向一个低位字节为该ID,高位字节为0的字符串的指针,将其作为参数传递给FindResource()获得一个指向该资源信息的指针,再将此指针传递给LoadResource()函数获得资源句柄。够麻烦吧,天下没有免费的午餐!  二、 使用图标  1、 改变一个窗口的图标:    HICON hnewIcon;    hnewIcon=LoadIcon(hInst,MAKEINTRESOURCE(IDI_NEWICON));    SendMessage(hWnd,STM_SETICON,IMAGE_ICON,(LPARAM)(UINT)hnewIco);  如果想修改一个的窗口类的所有派生窗口的图标,应当:   SetClassLong(hWnd,GCL_HICON,(LONG)hnewIcon);  改变系统大图标,只有在按下Alt Tab组合键才能看到结果   SetClassLong(hWnd,GCL_HICONSM,(LONG)hnewIcon);  改变系统小图标,在窗口的标题栏中立刻有反映  2、 将图标绘制进设备场景  例如:   HDC hdc;   DrawIcon(hdc,0,0,hnewIcon);  3、 在注册窗口类时为WNDCLASS或者WNDCLASSEX的hIconsm或hIcon属性设为图标句柄  4、 使用动画图标   hnewIcon=LoadImage(NULL,"C:\\AnimIcon.ANI",IMAGE_ICON,0,0,LR_LOADFROMFILE);  NULL表示将加载的Icon来自文件而不是EXE文件的实例,IMAGE_ICON限定加载的Image将作Icon使用。  三、 实例:获得一个EXE或DLL文件中的资源  1、 加载文件   HMODEL he;   he=LoadLiabrary("C:\\WINNT\\Explorer.exe");  2、 查找资源   HRSRC hrs;   hrs=FindResource(he,MAKEINTRESOURCE(100),RT_GROUP_ICON);  3、 加载资源   HGLOBAL hgl;   hgl=LoadResource(he,hrs);  4、 锁定资源   BYTE *lpr;   lpr=LockResource(hgl);  我们知道位图是由一个一个的Bit值来描述的,LockResource()函数返回一个指向存放位图Bit值的内存区域的的首字节的指针  5、 获得资源句柄   HICON hic;   hic=CreateIconFromResourceEx((PBYTE)lpr,//LockResource()返回的指针   SizeofResource(he,hgl),//资源的尺寸   TRUE//是图标,FALSE表示是Cursor,   0x00030000//图标的版本对Win3.x以上版本均为此值,   0,0,//图标的宽和高,设为0使用默认值   LR_DEFAULTCOLOR//使用的颜色,LR_MONOCHROME为单色);   在Windows中图标有四种,系统大图标、系统小图标、Shell大图标、Shell小图标。系统大图标供应用程序自身使用,比如在"关于"对话框中使用,当用户按下Alt Tab组合键时,也会显示系统大图标。系统小图标显示在程序窗口的左上角,Shell图标用于在资源管理器中显示。  一、 图标的获得  1、 自己设计  最直接的方法是在在资源设计器中设计一个图标,然后用LoadIamge()或LoadIcon()加载。也可以在程序运行的过程中创建图标,方法是填写一个ICONINFO结构(可以手工填,也可以调用GetIconInfo()函数填),然后调用CreateIconIndirect()获得一个HICON指针。  2、 捡现成的  使用CreateIconFromResourceEx()获取一个EXE或DLL文件中的图标。在一个EXE或DLL文件中有一个RT_GROUP_ICON图标目录,同时还有RT_GROUP_CURSOR鼠标目录,存放有多个图标或鼠标,分别适用于不同的显示设备,LookUpIconFromDirectoryEx()函数用来搜索图标目录,获得最适合当前显示设备的图标的ID,然后用MAKEINTRESOURCE宏将得到的图标ID转换成指向一个低位字节为该ID,高位字节为0的字符串的指针,将其作为参数传递给FindResource()获得一个指向该资源信息的指针,再将此指针传递给LoadResource()函数获得资源句柄。够麻烦吧,天下没有免费的午餐!  二、 使用图标  1、 改变一个窗口的图标:    HICON hnewIcon;    hnewIcon=LoadIcon(hInst,MAKEINTRESOURCE(IDI_NEWICON));    SendMessage(hWnd,STM_SETICON,IMAGE_ICON,(LPARAM)(UINT)hnewIco);  如果想修改一个的窗口类的所有派生窗口的图标,应当:   SetClassLong(hWnd,GCL_HICON,(LONG)hnewIcon);  改变系统大图标,只有在按下Alt Tab组合键才能看到结果   SetClassLong(hWnd,GCL_HICONSM,(LONG)hnewIcon);  改变系统小图标,在窗口的标题栏中立刻有反映  2、 将图标绘制进设备场景  例如:   HDC hdc;   DrawIcon(hdc,0,0,hnewIcon);  3、 在注册窗口类时为WNDCLASS或者WNDCLASSEX的hIconsm或hIcon属性设为图标句柄  4、 使用动画图标   hnewIcon=LoadImage(NULL,"C:\\AnimIcon.ANI",IMAGE_ICON,0,0,LR_LOADFROMFILE);  NULL表示将加载的Icon来自文件而不是EXE文件的实例,IMAGE_ICON限定加载的Image将作Icon使用。  三、 实例:获得一个EXE或DLL文件中的资源  1、 加载文件   HMODEL he;   he=LoadLiabrary("C:\\WINNT\\Explorer.exe");  2、 查找资源   HRSRC hrs;   hrs=FindResource(he,MAKEINTRESOURCE(100),RT_GROUP_ICON);  3、 加载资源   HGLOBAL hgl;   hgl=LoadResource(he,hrs);  4、 锁定资源   BYTE *lpr;   lpr=LockResource(hgl);  我们知道位图是由一个一个的Bit值来描述的,LockResource()函数返回一个指向存放位图Bit值的内存区域的的首字节的指针  5、 获得资源句柄   HICON hic;   hic=CreateIconFromResourceEx((PBYTE)lpr,//LockResource()返回的指针   SizeofResource(he,hgl),//资源的尺寸   TRUE//是图标,FALSE表示是Cursor,   0x00030000//图标的版本对Win3.x以上版本均为此值,   0,0,//图标的宽和高,设为0使用默认值   LR_DEFAULTCOLOR//使用的颜色,LR_MONOCHROME为单色); 下载本文示例代码


WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇WIN32用户界面设计基础之Icon 篇
阅读(841) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~