NextVisibleItem()、GetPrevVisibleItem()、GetChildItem()、
枫叶文学网www.fywxw.com
第5 章 常用控件
·141·
GetNextSiblingItem() 、GetPrevSiblingItem() 、GetParentItem() 、GetSelectedItem() 和
GetDropHilightItem()。
5.9.3 树型控件的通知消息
树形视图控件还可发送自己特有的通知消息,其中常用的有下面这几个。
? TVN_SELCHANGING 和TVN_SELCHANGED。在用户改变了对表项的选择时,控件
会发送这两个消息。消息会附带一个指向NM_TREEVIEW 结构的指针,程序可从该
结构中获得必要的信息。两个消息都会在该结构的itemOld 成员中包含原来的选择项
信息,在itemNew 成员中包含新选择项的信息,在action 成员中表明是用户的什么行
为触发了该通知消息( 若是TVC_BYKEYBOARD 则表明是键盘, 若是
TVC_BYMOUSE 则表明是鼠标,若是TVC_UNKNOWN 则表示未知)。两个消息的不
同之处在于,如果TVN_SELCHANGING 的消息处理函数返回TRUE,那么就阻止选
择的改变,如果返回FALSE,则允许改变。
? TVN_KEYDOWN。该消息表明了一个键盘事件。消息会附带一个指向TV_KEYDOWN
结构的指针,通过该结构程序可以获得按键的信息。
? TVN_BEGINLABELEDIT 和TVN_ENDLABELEDIT。分别在用户开始编辑和结束编
辑项的标题时发送。消息会附带一个指向TV_DISPINFO 结构的指针,程序可从该结
构中获得必要的信息。在前者的消息处理函数中,可以调用GetEditControl()成员函数
返回一个指向用于编辑标题的编辑框的指针。如果处理函数返回FALSE,则允许编辑,
如果返回TRUE,则禁止编辑。在后者的消息处理函数中,TV_DISPINFO 结构中的
item.pszText 指向编辑后的新标题,如果pszText 为NULL,那么说明用户放弃了编辑,
否则,程序应负责更新项的标题,这可以由SetItem()或SetItemText()函数来完成。
5.10 选项卡(Tab Ctrl)控件
5.10.1 选项卡控件的使用
Tab 属xìng页控件可以在一个窗口中添加不同的页面,然后在页选择发生改变时得到通知。
典型的选项卡控件,如图5-9 所示。
图5-9 CTabCtrl 控件样例
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·142·
MFC 中使用CTabCtrl 类来封装属xìng页控件的各种cāo作。通过调用Create 函数创建一个
窗口,Create 函数声明如下:
BOOL Create(DWORD dwStyle,const RECT