改为字串。我用这种方法指定资源名称,并在本书的其他地方也使用该方法。
我喜欢为图示(以及一些其他资源)使用文字名称,因为名称可以是程式的名称。例如,假定档案被命名为MYPROG。如果您使用「Icon
Properties」对话方块将图示的ID指定为「MyProg」(包括引号),资源描述档将包含下列叙述:
MYPROG ICON DISCARDABLE myprog.ico
然而,在RESOURCE.H中并没有#define叙述,来指出MYPROG是数值识别字。资源描述档将假定MYPROG是字串识别字。
在C程式中,使用LoadIcon函式来取得图示代号。您可能已经有了表示程式名的字串:
static TCHAR szAppName [] = TEXT ("MyProg") ;
这意味著程式可以使用叙述:
hIcon = LoadIcon (hInstance, szAppName) ;
来载入图示,这比巨集MAKEINTRESOURCE更清晰一些。
但是如果您确实想用数字来命名,那么您可以用数字代替识别字或字串。在「Icon
Properties」对话方块中,在ID栏中输入数字。资源描述档将有一个类似下面的ICON叙述:
125 ICON DISCARDABLE myprog.ico
可以使用两种方法之一引用图示。明显易读的方式是:
hIcon = LoadIcon (hInstance, MAKEINTRESOURCE (125)) ;
另一个不易阅读的方式是:
hIcon = LoadIcon (hInstance, TEXT ("#125")) ;
Windows识别初始字元#作为ASCII形式中字元数值的开头。
在程式中使用图示
虽然Windows以几种方式用图示来代表程式,但是许多Windows程式仅在用WNDCLASS结构和RegisterClass定义视窗类别时指定一个图示。如我们所看到的,这样作用得很好,尤其当图示档案包含标准和较小的图像大小时,更是如此。Windows在显示图示图像时,它会在图示档案中选择最合适的图像大小。
RegisterClass有一个改进版本叫做RegisterClassEx,它使用名为WNDCLASSEX的结构。WNDCLASSEX有两个附加的栏位:cbSize和hIconSm。cbSize栏位指出了WNDCLASSEX结构的大小,假设hIco |