📄 chap6_2.htm
字号:
<p ALIGN="JUSTIFY">UINT stateMask; //</font><font SIZE="3">状态的屏蔽组合</font><font FACE="Times New Roman" SIZE="3">(TVIF_STATE)</p>
<p ALIGN="JUSTIFY">LPSTR pszText; //</font><font SIZE="3">表项的标题正文</font><font FACE="Times New Roman" SIZE="3">(TVIF_TEXT)</p>
<p ALIGN="JUSTIFY">int cchTextMax; //</font><font SIZE="3">正文缓冲区的大小</font><font FACE="Times New Roman" SIZE="3">(TVIF_TEXT)</p>
<p ALIGN="JUSTIFY">int iImage; //</font><font SIZE="3">表项的图象索引</font><font FACE="Times New Roman" SIZE="3">(TVIF_IMAGE)</p>
</blockquote>
<blockquote>
<p ALIGN="JUSTIFY">int iSelectedImage; //</font><font SIZE="3">选中的项的图象索引</font><font FACE="Times New Roman" SIZE="3">(TVIF_SELECTEDIMAGE)</p>
<p ALIGN="JUSTIFY">int cChildren; /*</font><font SIZE="3">表明项是否有子项</font><font FACE="Times New Roman" SIZE="3">(TVIF_CHILDREN)</font><font SIZE="3">,为</font><font FACE="Times New Roman" SIZE="3">1</font><font SIZE="3">则有,为</font><font FACE="Times New Roman" SIZE="3">0</font><font SIZE="3">则没有</font><font FACE="Times New Roman" SIZE="3">*/</p>
</blockquote>
<blockquote>
<p ALIGN="JUSTIFY">LPARAM lParam; //</font><font SIZE="3">一个</font><font FACE="Times New Roman" SIZE="3">32</font><font SIZE="3">位的附加数据</font><font FACE="Times New Roman" SIZE="3">(TVIF_PARAM)</p>
</blockquote>
<p ALIGN="JUSTIFY">} TV_ITEM, FAR *LPTV_ITEM;</p>
</font><font SIZE="3"><p ALIGN="JUSTIFY">如果要使树形视图的表项显示图象,需要为树形视图建立一个位图序列,这时,</font><font FACE="Times New Roman" SIZE="3">iImage</font><font SIZE="3">说明表项显示的图象在位图序列中的索引,</font><font FACE="Times New Roman" SIZE="3">iSelectedImage</font><font SIZE="3">则说明了选中的表项应显示的图象,在绘制图标时,树形视图可以根据这两个参数提供的索引在位图序列中找到对应的位图.</font><font FACE="Times New Roman" SIZE="3">lParam</font><font SIZE="3">可用来放置与表项相关的数据,这常常是很有用的.</font><font FACE="Times New Roman" SIZE="3">state</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">stateMask</font><font SIZE="3">的常用值在表</font><font FACE="Times New Roman" SIZE="3">6.25</font><font SIZE="3">中列出,其中</font><font FACE="Times New Roman" SIZE="3">stateMask</font><font SIZE="3">用来说明要获取或设置哪些状态.</p>
</font>
</blockquote>
</blockquote>
<p><b><font SIZE="3"> </p>
<p ALIGN="CENTER">表</font><font FACE="Times New Roman" SIZE="3">6.25 </font><font SIZE="3">树形视图表项项的常用状态</font></b></p>
<table BORDER="1" CELLSPACING="1" CELLPADDING="1" WIDTH="579">
<tr>
<td WIDTH="29%"><font SIZE="3"><b><p ALIGN="JUSTIFY">状态</b></font></td>
<td WIDTH="21%"><font SIZE="3"><b><p ALIGN="JUSTIFY">对应的状态屏蔽</b></font></td>
<td WIDTH="49%"><font SIZE="3"><b><p ALIGN="JUSTIFY">含义</b></font></td>
</tr>
<tr>
<td WIDTH="29%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">TVIS_SELECTED</font></td>
<td WIDTH="21%"><font SIZE="3"><p ALIGN="JUSTIFY">同左</font></td>
<td WIDTH="49%"><font SIZE="3"><p ALIGN="JUSTIFY">项被选中.</font></td>
</tr>
<tr>
<td WIDTH="29%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">TVIS_EXPANDED</font></td>
<td WIDTH="21%"><font SIZE="3"><p ALIGN="JUSTIFY">同左</font></td>
<td WIDTH="49%"><font SIZE="3"><p ALIGN="JUSTIFY">项的子项被展开.</font></td>
</tr>
<tr>
<td WIDTH="29%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">TVIS_EXPANDEDONCE</font></td>
<td WIDTH="21%"><font SIZE="3"><p ALIGN="JUSTIFY">同左</font></td>
<td WIDTH="49%"><font SIZE="3"><p ALIGN="JUSTIFY">项的子项曾经被展开过.</font></td>
</tr>
<tr>
<td WIDTH="29%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">TVIS_CUT</font></td>
<td WIDTH="21%"><font SIZE="3"><p ALIGN="JUSTIFY">同左</font></td>
<td WIDTH="49%"><font SIZE="3"><p ALIGN="JUSTIFY">项被选择用来进行剪切和粘贴操作.</font></td>
</tr>
<tr>
<td WIDTH="29%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">TVIS_FOCUSED</font></td>
<td WIDTH="21%"><font SIZE="3"><p ALIGN="JUSTIFY">同左</font></td>
<td WIDTH="49%"><font SIZE="3"><p ALIGN="JUSTIFY">项具有输入焦点.</font></td>
</tr>
<tr>
<td WIDTH="29%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">TVIS_DROPHILITED</font></td>
<td WIDTH="21%"><font SIZE="3"><p ALIGN="JUSTIFY">同左</font></td>
<td WIDTH="49%"><font SIZE="3"><p ALIGN="JUSTIFY">项成为拖动操作的目标.</font></td>
</tr>
</table>
<p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<blockquote>
<blockquote>
<p ALIGN="JUSTIFY">TV_INSERTSTRUCT</font><font SIZE="3">结构.在向树形视图中插入新项时要用到该结构,其定义为</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">typedef struct
_TV_INSERTSTRUCT {</p>
<p ALIGN="JUSTIFY">HTREEITEM hParent; //</font><font SIZE="3">父项的句柄 </font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">HTREEITEM hInsertAfter; //</font><font SIZE="3">说明应插入到同层中哪一项的后面</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">TV_ITEM item; </p>
<p ALIGN="JUSTIFY">} TV_INSERTSTRUCT;</p>
</font><font SIZE="3"><p ALIGN="JUSTIFY">如果</font><font FACE="Times New Roman" SIZE="3">hParent</font><font SIZE="3">的值为</font><font FACE="Times New Roman" SIZE="3">TVI_ROOT</font><font SIZE="3">或</font><font FACE="Times New Roman" SIZE="3">NULL</font><font SIZE="3">,那么新项将被插入到树形视图的最高层(根位置).</font><font FACE="Times New Roman" SIZE="3">hInsertAfter</font><font SIZE="3">的值可以是</font><font FACE="Times New Roman" SIZE="3">TVI_FIRST</font><font SIZE="3">、</font><font FACE="Times New Roman" SIZE="3">TVI_LAST</font><font SIZE="3">或</font><font FACE="Times New Roman" SIZE="3">TVI_SORT</font><font SIZE="3">,其含义分别是将新项插入到同一层中的开头、最后或排序插入.</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">NM_TREEVIEW</font><font SIZE="3">结构.树形视图的大部分通知消息都会附带指向该结构的指针以提供一些必要的信息.该结构的定义为</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">typedef struct
_NM_TREEVIEW { nmtv </p>
<p ALIGN="JUSTIFY">NMHDR hdr; //</font><font SIZE="3">标准的</font><font FACE="Times New Roman" SIZE="3">NMHDR</font><font SIZE="3">结构</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">UINT action; //</font><font SIZE="3">表明是用户的什么行为触发了该通知消息</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">TV_ITEM itemOld; //</font><font SIZE="3">旧项的信息</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">TV_ITEM itemNew; //</font><font SIZE="3">新项的信息</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">POINT ptDrag; //</font><font SIZE="3">事件发生时鼠标的客户区坐标</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">} NM_TREEVIEW; </p>
<p ALIGN="JUSTIFY">TV_KEYDOWN</font><font SIZE="3">结构.提供与键盘事件有关的信息.该结构的定义为</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">pedef struct _TV_KEYDOWN {
tvkd </p>
<p ALIGN="JUSTIFY">NMHDR hdr; //</font><font SIZE="3">标准的</font><font FACE="Times New Roman" SIZE="3">NMHDR</font><font SIZE="3">结构</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">WORD wVKey; //</font><font SIZE="3">虚拟键盘码</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">UINT flags; //</font><font SIZE="3">为</font><font FACE="Times New Roman" SIZE="3">0</p>
<p ALIGN="JUSTIFY">} TV_KEYDOWN;</p>
<p ALIGN="JUSTIFY">TV_DISPINFO</font><font SIZE="3">结构.提供与表项的显示有关的信息.该结构的定义为</p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">typedef struct
_TV_DISPINFO { tvdi </p>
<p ALIGN="JUSTIFY">NMHDR hdr; </p>
<p ALIGN="JUSTIFY">TV_ITEM item; </p>
<p ALIGN="JUSTIFY">} TV_DISPINFO;</p>
</blockquote>
</blockquote>
<p ALIGN="JUSTIFY">MFC</font><font SIZE="3">的</font><font FACE="Times New Roman" SIZE="3">CTreeCtrl</font><font SIZE="3">类封装了树形视图.该类的</font><font FACE="Times New Roman" SIZE="3">Create</font><font SIZE="3">成员函数负责控件的创建,该函数的声明为</p>
<blockquote>
<blockquote>
<blockquote>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">BOOL Create( DWORD
dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );</font></p>
</blockquote>
</blockquote>
</blockquote>
<p><font SIZE="3"> </p>
<p ALIGN="JUSTIFY">其中参数</font><font FACE="Times New Roman" SIZE="3">dwStyle</font><font SIZE="3">是如表</font><font FACE="Times New Roman" SIZE="3">6.26</font><font SIZE="3">所示的控件风格的组合.</font><font FACE="Time
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -