📄 copy_item.shtml.htm
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Author" CONTENT="Zafir Anjum">
<META NAME="GENERATOR" CONTENT="Mozilla/4.0 [en] (WinNT; I) [Netscape]">
<TITLE>Copy an item to a new location</TITLE>
</HEAD>
<body background="../fancyhome/back.gif" tppabs="http://www.codeguru.com/fancyhome/back.gif" bgcolor="#FFFFFF" link="#B50029" vlink="#8E2323" alink="#FF0000" bgproperties="fixed">
<table WIDTH="100%">
<tr WIDTH="100%">
<td><td>
</tr>
</table>
<CENTER>
<H3>
<FONT COLOR="#AOAO99">Copy an item to a new location</FONT></H3></CENTER>
<CENTER>
<H3>
<HR></H3></CENTER>
Copying an item is simple but I抳e listed a function for copying anyway.
This function is used by other functions discussed later and it also contains
a component that we often forget - extensibility. At the end of the function,
the OnItemCopied() function is called to give the derived class the oppurtunity
to update any internal information.
<BR>
<BR><TT><FONT COLOR="#990000">// CopyItem
- Copies an item to a new location<BR>
// Returns
- Handle of the new item<BR>
// hItem
- Item to be copied<BR>
// htiNewParent - Handle
of the parent for new item<BR>
// htiAfter
- Item after which the new item should be created<BR>
HTREEITEM CTreeCtrlX::CopyItem( HTREEITEM hItem, HTREEITEM htiNewParent, <BR>
HTREEITEM htiAfter /*= TVI_LAST*/ )<BR>
{<BR>
TV_INSERTSTRUCT
tvstruct;<BR>
HTREEITEM
hNewItem;<BR>
CString
sText;<BR>
<BR>
// get information of the source
item<BR>
tvstruct.item.hItem = hItem;<BR>
tvstruct.item.mask = TVIF_CHILDREN
| TVIF_HANDLE | <BR>
TVIF_IMAGE | TVIF_SELECTEDIMAGE;<BR>
GetItem(&tvstruct.item); <BR>
sText = GetItemText( hItem );<BR>
<BR>
tvstruct.item.cchTextMax = sText.GetLength();<BR>
tvstruct.item.pszText = sText.LockBuffer();<BR>
<BR>
// Insert the item at proper
location<BR>
tvstruct.hParent = htiNewParent;<BR>
tvstruct.hInsertAfter = htiAfter;<BR>
tvstruct.item.mask = TVIF_IMAGE
| TVIF_SELECTEDIMAGE | TVIF_TEXT;<BR>
hNewItem = InsertItem(&tvstruct);<BR>
sText.ReleaseBuffer();<BR>
<BR>
// Now copy item data and item
state.<BR>
SetItemData( hNewItem, GetItemData(
hItem ));<BR>
SetItemState( hNewItem, GetItemState(
hItem, TVIS_STATEIMAGEMASK ), <BR>
TVIS_STATEIMAGEMASK );<BR>
<BR>
// Call virtual function to
allow further processing in derived class<BR>
OnItemCopied( hItem, hNewItem
);<BR>
<BR>
return hNewItem;<BR>
}<BR>
<BR>
void CTreeCtrlX::OnItemCopied(HTREEITEM /*hItem*/, HTREEITEM /*hNewItem*/
)<BR>
{<BR>
// Virtual function <BR>
}<BR>
<BR>
<BR>
</FONT></TT><FONT COLOR="#000000">In the class declaration add the following.<BR>
<BR>
</FONT><TT><FONT COLOR="#990000">public:<BR>
HTREEITEM CopyItem( HTREEITEM
hItem, HTREEITEM htiNewParent, <BR>
HTREEITEM htiAfter = TVI_LAST );<BR>
<BR>
protected:<BR>
virtual void OnItemCopied( HTREEITEM
hItem, HTREEITEM hNewItem );</FONT></TT><BR>
<BR>
<P>
<HR>
<TABLE BORDER=0 WIDTH="100%" >
<TR>
<TD WIDTH="33%"><FONT SIZE=-1><A HREF="../index.htm" tppabs="http://www.codeguru.com/">Goto HomePage</A></FONT></TD>
<TD WIDTH="33%">
<CENTER><FONT SIZE=-2>© 1997 Zafir Anjum</FONT> </CENTER>
</TD>
<TD WIDTH="34%">
<DIV ALIGN=right><FONT SIZE=-1>Contact me: <A HREF="mailto:zafir@home.com">zafir@home.com</A> </FONT></DIV>
</TD>
</TR>
</TABLE>
<CENTER> <IMG SRC="../cgi/Count.cgi-ft=2&dd=E-df=tv_copy_item.cnt" tppabs="http://www.codeguru.com/cgi/Count.cgi?ft=2&dd=E%7cdf=tv_copy_item.cnt" ALIGN="BOTTOM" BORDER="0"></CENTER>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -