友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

VC语言6.0程序设计从入门到精通-第43章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




调用函数前应该使该结构的 hItem 成员有效以指定表项。CtreeCtrl 类还提供了一系列函数可 

完成   GetItem 和  SetItem 的部分功能,其中          GetItemState 、GetItemText 、GetItemData 、 

GetItemImage 和 ItemHasChildren  函数用于查询,SetItemState、SetItemText、SetItemData 和 

SetItemImage 函数用于设置。  



    7 .GetNextItem()函数  



    在使用树形视图控件时,一个经常遇到的问题是对于一个已知表项,如何找到与该项有 

某种关系的项,例如,父项、子项、兄弟项、下一个或前一个可见的项。利用 GetNextItem() 

函数可以解决这个问题,该函数也可以用来搜索具有某种状态的表项。GetNextItem()函数在 

遍历树形视图时是很有用的,它的声明如下:  



    HTREEITEM GetNextItem(HTREEITEM hItem;UINT nCode);  



    参数 hItem 指定了一个项。参数 nCode 是一个标志,标明了与指定项的关系,nCode 可 

以是如表  5…24  所示的各种标志。如果找到相关的项,函数返回该项的句柄,否则函数返回 

NULL 。  



    表 5…24                    树型控件中 nCode 的取值  



           风格                                      含义  

 TVGN_CARET               返回当前的选择项  

 TVGN_CHILD               返回指定表项的子项  

 TVGN_DROPHILITE          返回拖动操作的目标项  

 TVGN_FIRSTVISIBLE        返回第一个可见项  

 TVGN_NEXT                返回指定项的下一个兄弟项(Sibling Item)  

 TVGN_NEXTVISIBLE         返回指定项的后一个可见项  

 TVGN_PARENT              返回指定项的父项  

 TVGN_PREVIOUS            返回指定项的前一个兄弟项  

 TVGN_PREVIOUSVISIBLE     返回指定项的前一个可见项  

 TVGN_ROOT                返回位于最高层(根位置)的第一个表项  



    CTreeCtrl 类 提 供 了 一 系 列 的 成 员 函 数 来 完 成     GetNextItem 的 某 一 项 功 能 , 包 括 

GetRootItem()、GetFirstVisibleItem()、GetNextVisibleItem()、GetPrevVisibleItem()、GetChildItem()、 



 ·140 ·  


…………………………………………………………Page 150……………………………………………………………

                                                            第 5 章    常用控件  



GetNextSiblingItem() 、  GetPrevSiblingItem() 、  GetParentItem() 、  GetSelectedItem()  和 

GetDropHilightItem() 。  



5。9。3    树型控件的通知消息  



    树形视图控件还可发送自己特有的通知消息,其中常用的有下面这几个。  

    o  TVN_SELCHANGING 和 TVN_SELCHANGED 。在用户改变了对表项的选择时,控件 

     会发送这两个消息。消息会附带一个指向 NM_TREEVIEW  结构的指针,程序可从该 

     结构中获得必要的信息。两个消息都会在该结构的 itemOld  成员中包含原来的选择项 

     信息,在 itemNew 成员中包含新选择项的信息,在 action 成员中表明是用户的什么行 

     为 触 发 了 该 通 知 消 息 ( 若 是     TVC_BYKEYBOARD     则 表 明 是 键 盘 , 若 是 

     TVC_BYMOUSE 则表明是鼠标,若是 TVC_UNKNOWN 则表示未知)。两个消息的不 

      同之处在于,如果 TVN_SELCHANGING 的消息处理函数返回 TRUE,那么就阻止选 

     择的改变,如果返回 FALSE ,则允许改变。  

    o  TVN_KEYDOWN 。该消息表明了一个键盘事件。消息会附带一个指向 TV_KEYDOWN 

     结构的指针,通过该结构程序可以获得按键的信息。  

    o  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 属性页控件可以在一个窗口中添加不同的页面,然后在页选择发生改变时得到通知。 

典型的选项卡控件,如图 5…9 所示。  



                                                      



                           图 5…9    CTabCtrl 控件样例  



                                                                   ·141 ·  


…………………………………………………………Page 151……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



    MFC  中使用 CTabCtrl 类来封装属性页控件的各种操作。通过调用 Create  函数创建一个 

窗口,Create 函数声明如下:  



    BOOL Create(DWORD dwStyle;const RECT& rect;CWnd* pParentWnd;UINT nID)  



    其中 dwStyle 中可以使用以下一些属性页控件的专用风格。    

    o  TCS_BUTTONS :使用按钮来表示页选择位置。  

    o  TCS_MULTILINE :分行显示页选择位置。  

    o  TCS_SINGLELINE :只使用一行显示页选择位置。  

    在控件创建后必需向其中添加页面才可以使用,添加页面的函数为:    



    BOOL InsertItem(int nItem;LPCTSTR lpszItem);  



    其中 nItem  为位置,从 0 开始,lpszItem 为页选择位置上显示的文字。如果希望在页选 

择位置处显示一个图标,可以调用  InsertItem              (在此之前必须调用SetImageList         设置正确的 

ImageList )。  

    对组成选项卡(TabControl )控件(CTabCtrl )选项卡的外观和行为可以有相当多的设置 

方法。每个选项卡可以有与之关联的标签、图标、项状态和应用程序定义的 32 位数值。对每 

个选项卡,可以显示图标、标签或两者都显示。  

    另外,每个选项卡项可以有 3 种可能的状态:已按下、非按下或突出显示 。该状态仅能 

通过修改现有选项卡项来设置 。若要修改现有选项卡项,应调用 GetItem()函数检索它,修改 

TCITEM 结构(特别是 dwState 和 dwStateMask 数据成员),然后通过调用 SetItem 返回修改 

过的 TCITEM 结构。若要清除 CTabCtrl 对象中所有选项卡项的项状态,应调用 DeselectAll() 

函数。该函数重新设置所有选项卡项或所有项的状态(当前选定的项除外)。  

    下列代码清除所有选项卡项的状态,然后修改第三项的状态:  



    //modify the third item to be highlighted  



    TCITEM curItem;  



    m_tabCtrl。DeselectAll(FALSE); //reset all tab items  



    curItem。mask= TCIF_STATE;  



    m_tabCtrl。GetItem(2; &curItem);  



    curItem。mask= TCIF_STATE;  



    curItem。dwState= TCIS_HIGHLIGHTED;  



    curItem。dwStateMask= TCIS_HIGHLIGHTED;  



    m_tabCtrl。SetItem(2; &curItem);  



5。10。2    选项卡控件通知消息  



    当单击选项卡或按钮时,选项卡(TabControl )控件(CTabCtrl )向其父窗口发送通知消 

息。如果要进行某种响应,应对这些消息进行处理。例如,当单击选项卡时,也许想在显示 

选项卡之前在页面上预设控件数据,即响应单击选项卡消息时作出预设数据的响应。  

    处理来自视图或对话框类中的选项卡(TabControl )控件的 WM_NOTIFY 消息,用“属 

性”窗口创建带 switch 语句的 OnChildNotify()处理函数。选项卡控件向父窗口发送的主要通 

知消息如表 5…25 所示。  



 ·142 ·  


…………………………………………………………Page 152……………………………………………………………

                                                                                 第 5 章    常用控件  



     表 5…25                            选项卡控件的通知消息  



          通知消息                                               含义  

 NM_CLICK                    通知父窗口用户在控件区域范围内点击了鼠标左键  

 NM_RCLICK                   通知父窗口用户在控件区域范围内点击了鼠标右键  

 NM_RELEASEDCAPTURE          通知父窗口在控件区域范围内释放鼠标捕获消息  

 TCN_FOCUSCHANGE             通知父窗口控件的按钮聚焦已经改变  

 TCN_GETOBJECT                当具有 TCS_EX_REGISTERDROP 扩展特性时并且对象被拖动的通知消息  

 TCN_KEYDOWN                 通知父窗口在控件范围内键盘被按下  

 TCN_SELCHANGE               通知父窗口控件的选项卡选择项已经改变  

 TCN_SELCHANGING             通知父窗口控件的选项卡选择项正在改变  



     选项卡控件还涉及到一些重要的数据结构,这些预定义的数据结构在该控件应用中起着 

重要作用。主要涉及到的的结构如下。  



     1.NMTCKEYDOWN 结构  



     该结构包含键盘按下时的相关信息,主要用于处理 TCN_KEYDOWN 通知消息,该结构 

定义如下:  



     typedef struct tagNMTCKEYDOWN {  



             NMHDR hdr;  



             WORD wVKey;  



             UINT flags;  



     } NMTCKEYDOWN  



     2 .TCHITTESTINFO 结构  



     该结构主要用于鼠标单击测试的通知消息,定义如下:  



     typedef struct tagTCHITTESTINFO {  



             POINT pt;  



             UINT flags;  



     } TCHITTESTINFO; *LPTCHITTESTINFO;  



     3 .TCITEM 结构  



     该结构指定选项卡控件选项的具体属性,定义如下:  



返回目录 上一页 下一页 回到顶部 0 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!