ONDEMO.RES中,并且由连结程式将资源添加到ICONDEMO.EXE中以後,该资源就可以经由一个资源型态(RT_ICON)和一个识别字(IDI_ICON或101)来标识。程式可以通过呼叫LoadIcon函式取得此图示的代号:
hIcon = LoadIcon (hInstance, MAKEINTRESOURCE (IDI_ICON)) ;
请注意ICONDEMO在两个地方呼叫这个函式,一次在定义视窗类别时,另一次在视窗讯息处理程式中取得图示的代号用於绘制。LoadIcon传回HICON型态的值,它是图示的代号。
LoadIcon的第一个参数,是指出资源来自哪个档案的执行实体代号。使用hInstance表示它来自程式自己的.EXE档案。LoadIcon的第二个参数实际上被定义为指向字串的指标。待会将会看到,可以使用字串而不是用数值识别字标识资源。巨集MAKEINTRESOURCE(把整数转换成资源字串)生成指向非数字的指标,如下所示:
#define MAKEINTRESOURCE(i) (LPTSTR) ((DWORD) ((WORD) (i)))
LoadIcon知道,如果第二个参数的高字组为0,那么低字组就为图示的数值识别字。图示的识别字必须为16位元值。
本书前面的范例程式使用了预先定义的图示:
LoadIcon (NULL, IDI_APPLICATION) ;
hInstance参数被设定为NULL,因此Windows知道这是预先定义的图示。IDI_APPLICATION也在WINUSER.H中用MAKEINTRESOURCE定义:
#define IDI_APPLICATION MAKEINTRESOURCE(32512)
LoadIcon的第二个参数带来了一个有趣的问题:图示的识别字能可以为字串吗?答案是可以。方法如下:在 Developer Studio 中,在 ICONDEMO 专案的档案列表上,选择 IDONDEMO.RC 。您会看到顶端为「IconDemo
Resource」的树状结构,然後是资源型态「Icon」,再下来是「IDI_ICON」。如果用滑鼠右键单击图示识别字,并从功能表上选择「 Properties 」,您就能改变ID。实际上,您可以把名称放在引号内将其更 |