在一开始用DWT编写Windows下的应用程序时,可能会遇到程序图标设置的问题。有人曾在D语言的新闻组说,花了一整天都没有搞出程序左上角的图标。明白了原理就比较简单了。
简说Widdows下的程序图标
Windows 95, Windows 98, Windows NT 4.0和 Windows 2000的程序都和两个ICON关联: 一个小图标 (16x16) 和一个大图标 (32x32).
https://www.d-programming-language-china.org/dwt-windows-icon/- 小图标显示在程序的左上角和任务栏。
- 在有的Windows系统,按 ALT+TAB 切换应用程序时,会使用程序提供的大图标
如果我们自己编写WinMain入口函数,小图标和大图标可以在 RegisterClassEx() 函数设置,这个函数使用一个指向 WNDCLASSEX structure的指针. WNDCLASSEX structure除了可以设置小图标hIconSm,其他和WNDCLASS structure 一样。在Windows95下,如果没有指定小图标,会把大图标缩小成 16x16来使用。
在Java SWT(DWT)中,程序的图标是通过 WM_SETICON message运行时动态设置的。
默认情况下,开始菜单显示的程序图标使用程序资源文件里的第一个icon, 也可以在开始菜单,属性里修改使用的图标。
在资源管理器里显示的程序图标显示的是程序资源管理器里的第一个icon。也可以在注册表里程序信息里设置DefaultIcon 或者设置shell扩展名的的类型图标。
DWT里设置程序图标
DWT是目前D语言里最好的GUI库,D语言中国 https://www.d-programming-language-china.org/推荐大家使用。
设置小图标
shell.setImage(icon16); // or icon32
设置小图标和大图标
shell.setImages([icon32,png32]);
设置资源管理器显示的图标
- 创建一个.rc文件:
101 ICON DISCARDABLE "program32.ico"
- 编译res资源文件
rcc program.rc -32 -r -ores\program.res
- 链接res资源文件
在D语言编译器dmd的命令行中加上参数:
-L/rc:res\program.res
- 创建一个.rc文件:
Digital Mars的资源编译器rcc可以从这里下载:
ftp://ftp.digitalmars.com/bup.zip
参考: How To Use the Small Icon in Windows
https://www.d-programming-language-china.org/dwt-windows-icon/DWT Windows下的程序图标设置