初始化图像列表

【勇芳软件工作室】汉化HomePreviousNext

树视图控件中的每个项目都可以有两个与之相关联的图像。一个项目在选择时显示一个图像,另一个在不显示时显示。要包含具有树视图项目的图像,您必须使用图像列表功能来创建图像列表并向其添加图像。然后,您必须使用TVM_SETIMAGELIST消息将图像列表与树视图控件相关联。

以下示例创建一个图像列表,向列表中添加三个位图,并将图像列表与树视图控件相关联。

// InitTreeViewImageLists - 创建一个图像列表,向它添加三个位图,并将图像列表与树视图控件相关联。

//如果成功返回TRUE,否则返回FALSE。

// hwndTV - 树视图控件的句柄

//
//全局变量和常量

// g_nOpen,g_nClosed和g_nDocument - 的整数变量

//图像的索引

// CX_BITMAP和CY_BITMAP - 图标的宽度和高度

// NUM_BITMAPS - 要添加到图像列表的位图数

BOOL InitTreeViewImageLists(HWND hwndTV)

{

HIMAGELIST himl; //图片列表处理

HBITMAP hbmp; //处理位图

//创建图像列表。

if ((himl = ImageList_Create(CX_BITMAP, CY_BITMAP,

FALSE, NUM_BITMAPS, 0)) == NULL)

return FALSE;

//添加打开的文件,关闭文件和文档位图。

hbmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_OPEN_FILE));

g_nOpen = ImageList_Add(himl, hbmp, (HBITMAP) NULL);

DeleteObject(hbmp);

hbmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_CLOSED_FILE));

g_nClosed = ImageList_Add(himl, hbmp, (HBITMAP) NULL);

DeleteObject(hbmp);

hbmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_DOCUMENT));

g_nDocument = ImageList_Add(himl, hbmp, (HBITMAP) NULL);

DeleteObject(hbmp);

//如果不是全部图像都被添加,则失败。

if(ImageList_GetImageCount(himl)< 3)

return FALSE;

//将图像列表与树视图控件关联。

TreeView_SetImageList(hwndTV, himl, TVSIL_NORMAL);

return TRUE;

}