WEB开发网
开发学院软件开发汇编语言 汇编教程之树型视图控件 阅读

汇编教程之树型视图控件

 2008-04-28 09:33:29 来源:WEB开发网   
核心提示:在发送该消息前必须设置成员变量imask的值,以便WINDOWS能告诉相关的信息,汇编教程之树型视图控件(3),当然,最重要的是,拖拉的动作限制在该窗口中,x 和 y是在拖拉时显示图象的初始位置的坐标值,您必须传递您想得到信息的项目的句柄,这就引起了一个问题

在发送该消息前必须设置成员变量imask的值,以便WINDOWS能告诉相关的信息。当然,最重要的是,您必须传递您想得到信息的项目的句柄。这就引起了一个问题,您如何得到项目的句柄?要保存所有项目的句柄吗?

答案是很简单的:没有必要。您可以发送消息TVM_GETNEXTITEM到树型视图以检索您想要得到其属性的项目的句柄。譬如:您可以查询第一个子项目的句柄、根目录的句柄、选中的项目的句柄等等。

TVM_GETNEXTITEM

wParam = 标志

lParam = 树型视图的句柄(仅仅当wParam的值是某些标志位时才是必须的)。

wParam中的值非常重要, 我解释如下:

TVGN_CARET 选中的项目

TVGN_CHILD hitem参数指定项目的第一个子项目

TVGN_DROPHILITE 拖-拉操作的目的项目

TVGN_FIRSTVISIBLE 第一个可见项目

TVGN_NEXT 下一个同级项目

TVGN_NEXTVISIBLE 下一个可见项目,指定的项目必须可见。发送消息TVM_GETITEMRECT 来决定项目是否可见

TVGN_PARENT 指定项目的父项目

TVGN_PREVIOUS 前一个同级项目

TVGN_PREVIOUSVISIBLE 前一个可见项目,指定的项目必须可见。发送消息TVM_GETITEMRECT 来决定项目是否可见

TVGN_ROOT 根项目

由此您可以通过发送该消息来得到项目的句柄,然后在发送消息TVM_GETITEM时在结构体变量TV_ITEM的成员变量hItem中放入该项目的句柄就可以得到关于该项目的有关信息了。

在树型视图中进行拖-拉操作

也就是因为这一部分我才决定写这课教程。当我按照InPrise公司的WIN32帮助来运行例子时,发现它的帮助中缺少真正重要的信息。我只有通过自己做实验,最后总算弄明白来个中来由。希望您不要和我一样再去走这些弯路,下面我把我所知的在树型视图中进行拖-拉操作的步骤描述如下:

当用户要拖动一个项目时,树型视图控件会给它的父窗口发送TVN_BEGINDRAG通知消息。您可以在此处创建表示项目处在拖动操作中的图象,这可以通过发送TVM_CREATEDRAGIMAGE消息给树型视图,让其为目前使用的图象产生一副缺省的图象来实现。树型视图控件将创建一个图象列表,其中仅包含一副在拖动中显示的图象,图象列表创建后,您可以得到它的句柄。

在拖拉的图象生成后,您可以通过调用ImageList_BeginDrag来指定拖动图象的热点位置。

ImageList_BeginDrag PROTO himlTrack:DWORD, \

iTrack:DWORD , \

dxHotspot:DWORD, \

dyHotspot:DWORD

himlTrack 是包含了拖拉时显示的图象的图象列表的句柄

iTrack 是选中的图象在图象列表中的索引号。

dxHotspot 因为在拖动中该图象被用来取代光标,所以我们必须指定图象中的哪一点是光标的左上角的位置。dxHotspot是水平相对位置。

dyHotspot 是垂直相对位置。

iTrack等于0。如果您要想光标的热点在拖拉中显示的图象的左上角,把dxHotspot和dyHotspot都设成0。

当拖拉的图象要显示时,我们调用ImageList_DragEnter 在树型视图中显示该图象。

ImageList_DragEnter PROTO hwndLock:DWORD, x:DWORD, y:DWORD

hwndLock 是进行拖拉中的窗口的句柄,拖拉的动作限制在该窗口中。

x 和 y是在拖拉时显示图象的初始位置的坐标值。这些值是相对于窗口的左上角而不是客户区的左上角。

上一页  1 2 3 4 5  下一页

Tags:汇编 教程 视图

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接