回调项和回调面罩

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

对于每个项目,列表视图控件通常存储标签文本项目图标的图像列表索引项目的状态的一组位标志。您可以定义回调项或更改控件的回调掩码,以指示应用程序__而不是控件__存储部分或全部此信息。如果您的应用程序已经存储了某些信息,您可能需要使用回调。

列表视图控件中的【回调项】是应用程序存储文本,图标索引或两者的项目。当您发送LVM_INSERTITEM消息以将项目添加到列表视图控件时,可以定义回调项目。如果应用程序存储项目或子项目的文本,请将该项目的LV_ITEM结构的pszText成员设置为LPSTR_TEXTCALLBACK。如果应用程序存储项目的图标索引,请将该项目的LV_ITEM结构的图像成员设置为I_IMAGECALLBACK。

列表视图控件的【回调掩码】是一组位标志,用于指定应用程序而不是控件存储当前数据的项目状态。回调掩码适用于所有控件的项目,不同于回调项目指定,适用于特定项目。默认情况下,回调掩码为零,这意味着列表视图控件存储所有项目状态信息。创建列表视图控件并初始化其项后,您可以发送LVM_SETCALLBACKMASK消息来更改回调掩码。要获取当前的回调掩码,请发送LVM_GETCALLBACKMASK消息。

当列表视图控件必须显示或排序应用程序存储回调信息的列表视图项目时,控件将向控件的父窗口发送LVN_GETDISPINFO通知消息。此消息指定一个LV_DISPINFO结构,指定所需信息的类型,并标识感兴趣的项目或子项目。父窗口必须处理LVN_GETDISPINFO以提供所请求的数据。

如果列表视图控件检测到项目的回调信息(即应用程序正在跟踪的文本,图标或状态信息的变化)的更改,控件将发送LVN_SETDISPINFO通知消息以通知您更改。

如果更改回调项的属性或状态位,则可以使用LVM_UPDATE消息强制控件重新绘制项。如果该消息具有LVS_AUTOARRANGE样式,则该消息还将导致控件排列它的项目。您可以使用LVM_REDRAWITEMS消息通过使列表视图控件的客户区域的相应部分失效来重绘一系列项目。

通过有效地使用回调项和回调掩码,您可以确保每个item属性只保留在一个位置。这样做可以简化应用程序,但保存的唯一空间是存储项目标签和子项目文本所需的内存。