Files
Work/imagelst/SCRAPS.TXT
2024-08-07 09:16:27 -04:00

500 lines
14 KiB
Plaintext

WORD addChildNode(const TreeViewItem &someTreeViewItem,const String &parentString);
WORD addSiblingNode(const TreeViewItem &someTreeViewItem,const String &parentString);
WORD TreeView::addChildNode(const TreeViewItem &someTreeViewItem,const String &parentString)
{
HTREEITEM hParent(0);
HTREEITEM hTreeItem;
HTREEITEM hPrevItem;
HTREEITEM hChildItem;
String bufferString;
TreeViewInsert viewInsert;
TreeViewItem viewItem;
bufferString.length(255);
hTreeItem=getChild(TVGN_ROOT);
while(hTreeItem)
{
hChildItem=getChild(hTreeItem);
if(hChildItem&&searchInsertChild(someTreeViewItem,viewInsert,parentString,hChildItem))
{
insertItem(viewInsert);
return TRUE;
}
else
{
viewItem.mask(TreeViewItem::MaskText);
viewItem.item(hTreeItem);
viewItem.text(bufferString);
getItem(viewItem);
if(parentString==viewItem.text())
{
hParent=hTreeItem;
viewItem=TreeViewItem();
viewItem.mask(TreeViewItem::MaskText|TreeViewItem::MaskImage|TreeViewItem::MaskSelectedImage|TreeViewItem::MaskParam);
viewItem.text(someTreeViewItem.text());
viewItem.image(someTreeViewItem.image());
viewItem.selectedImage(someTreeViewItem.selectedImage());
viewItem.lParam(someTreeViewItem.lParam());
viewInsert.parent(hParent);
viewInsert.insertAfter(hPrevItem);
viewInsert.viewItem(viewItem);
insertItem(viewInsert);
return TRUE;
}
}
hPrevItem=hTreeItem;
hTreeItem=getNextSibling(hTreeItem);
}
return TRUE;
}
WORD TreeView::addSiblingNode(const TreeViewItem &someTreeViewItem,const String &parentString)
{
HTREEITEM hParent(0);
HTREEITEM hTreeItem;
HTREEITEM hPrevItem;
HTREEITEM hChildItem;
String bufferString;
TreeViewInsert viewInsert;
TreeViewItem viewItem;
bufferString.length(255);
hTreeItem=getChild(TVGN_ROOT);
while(hTreeItem)
{
hChildItem=getChild(hTreeItem);
if(hChildItem&&searchInsertSibling(someTreeViewItem,viewInsert,parentString,hTreeItem,hChildItem))
{
insertItem(viewInsert);
return TRUE;
}
else
{
viewItem.mask(TreeViewItem::MaskText);
viewItem.item(hTreeItem);
viewItem.text(bufferString);
getItem(viewItem);
if(parentString==viewItem.text())
{
hParent=hTreeItem;
viewItem=TreeViewItem();
viewItem.mask(TreeViewItem::MaskText|TreeViewItem::MaskImage|TreeViewItem::MaskSelectedImage|TreeViewItem::MaskParam);
viewItem.text(someTreeViewItem.text());
viewItem.image(someTreeViewItem.image());
viewItem.selectedImage(someTreeViewItem.selectedImage());
viewItem.lParam(someTreeViewItem.lParam());
viewInsert.parent(hParent);
viewInsert.insertAfter(hPrevItem);
viewInsert.viewItem(viewItem);
insertItem(viewInsert);
return TRUE;
}
}
hPrevItem=hTreeItem;
hTreeItem=getNextSibling(hTreeItem);
}
return TRUE;
}
WORD TreeView::searchInsertChild(TreeViewItem &viewItem,TreeViewInsert &viewInsert,const String &parentString,HTREEITEM hParent)
{
WORD searchResult(FALSE);
HTREEITEM hPrevItem(FALSE);
HTREEITEM hTreeItem(hParent);
HTREEITEM hChildItem;
TreeViewItem searchItem;
String bufferString;
bufferString.length(String::MaxString);
while(hTreeItem)
{
hChildItem=getChild(hTreeItem);
if(hChildItem&&searchInsertChild(viewItem,viewInsert,parentString,hChildItem))
{
searchResult=TRUE;
break;
}
searchItem.mask(TreeViewItem::MaskText);
searchItem.item(hTreeItem);
searchItem.text(bufferString);
getItem(searchItem);
if(searchItem.text()==parentString)
{
viewInsert.parent(hTreeItem);
viewInsert.insertAfter(hPrevItem);
viewItem.mask(TreeViewItem::MaskText|TreeViewItem::MaskImage|TreeViewItem::MaskSelectedImage|TreeViewItem::MaskParam);
viewInsert.viewItem(viewItem);
searchResult=TRUE;
break;
}
hPrevItem=hTreeItem;
hTreeItem=getNextSibling(hTreeItem);
}
return searchResult;
}
WORD TreeView::searchInsertSibling(TreeViewItem &viewItem,TreeViewInsert &viewInsert,const String &parentString,HTREEITEM hParent,HTREEITEM hChildItem)
{
WORD searchResult(FALSE);
HTREEITEM hPrevItem(FALSE);
HTREEITEM hTreeItem(hChildItem);
HTREEITEM hChildNode;
TreeViewItem searchItem;
String bufferString;
bufferString.length(String::MaxString);
while(hTreeItem)
{
hChildNode=getChild(hTreeItem);
if(hChildNode&&searchInsertSibling(viewItem,viewInsert,parentString,hTreeItem,hChildNode))
{
searchResult=TRUE;
break;
}
searchItem.mask(TreeViewItem::MaskText);
searchItem.item(hTreeItem);
searchItem.text(bufferString);
getItem(searchItem);
if(searchItem.text()==parentString)
{
viewInsert.parent(hParent);
viewInsert.insertAfter(hPrevItem);
viewItem.mask(TreeViewItem::MaskText|TreeViewItem::MaskImage|TreeViewItem::MaskSelectedImage|TreeViewItem::MaskParam);
viewInsert.viewItem(viewItem);
searchResult=TRUE;
break;
}
hPrevItem=hTreeItem;
hTreeItem=getNextSibling(hTreeItem);
}
return searchResult;
}
// mhTreeViewWnd=::CreateWindow("SysTreeView32","",WS_VISIBLE|WS_BORDER|WS_CHILD|viewFlags,
// winRect.left(),winRect.top(),winRect.right(),winRect.bottom(),
// parentWindow(),(HMENU)TreeViewID,TreeView::processInstance(),0);
// mhTreeViewWnd=::CreateWindowEx(WS_EX_CLIENTEDGE|WS_EX_LEFT|WS_EX_LTRREADING|WS_EX_RIGHTSCROLLBAR,
// "SysTreeView32","",WS_CHILD|WS_VISIBLE|TVS_HASBUTTONS|TVS_HASLINES|TVS_EDITLABELS,
// winRect.left(),winRect.top(),winRect.right(),winRect.bottom(),
// parentWindow(),(HMENU)TreeViewID,TreeView::processInstance(),0);
// ::UpdateWindow(mhTreeViewWnd);
WORD TreeView::addChildNode(const TreeViewItem &someTreeViewItem,const String &parentString)
{
HTREEITEM hParent(0);
HTREEITEM hTreeItem;
HTREEITEM hPrevItem;
String bufferString;
bufferString.length(255);
hTreeItem=getChild(TVGN_ROOT);
while(hTreeItem)
{
TreeViewItem viewItem;
viewItem.mask(TreeViewItem::MaskText);
viewItem.item(hTreeItem);
viewItem.text(bufferString);
getItem(viewItem);
if(parentString==viewItem.text())
{
hParent=hTreeItem;
while(hTreeItem){hPrevItem=hTreeItem;hTreeItem=getChild(hTreeItem);}
TreeViewInsert viewInsert;
viewItem=TreeViewItem();
viewItem.mask(TreeViewItem::MaskText|TreeViewItem::MaskImage|TreeViewItem::MaskSelectedImage|TreeViewItem::MaskParam);
viewItem.text(someTreeViewItem.text());
viewItem.image(someTreeViewItem.image());
viewItem.selectedImage(someTreeViewItem.selectedImage());
viewItem.lParam(someTreeViewItem.lParam());
viewInsert.parent(hParent);
viewInsert.insertAfter(hPrevItem);
viewInsert.viewItem(viewItem);
insertItem(viewInsert);
break;
}
hPrevItem=hTreeItem;
hTreeItem=getNextSibling(hTreeItem);
}
return TRUE;
}
WORD TreeView::searchInsert(const TreeItem &viewItem,TreeViewInsert &viewInsert,const String &parentString,HTREEITEM hParent)
{
WORD searchResult(FALSE);
HTREEITEM hPrevItem(FALSE);
HTREEITEM hTreeItem(hParent);
TreeViewItem searchItem;
String bufferString;
bufferString.length(String::MaxString);
while(hTreeItem)
{
searchItem.mask(TreeViewItem::MaskText);
searchItem.item(hTreeItem);
searchItem.text(bufferString);
getItem(searchItem);
if(searchItem.text()==parentString)
{
viewInsert.parent(hParent);
viewInsert.insertAfter(hPrevItem);
viewInsert.viewItem(viewItem);
searchResult=TRUE;
break;
}
hPrevItem=hTreeItem;
hTreeItem=getNextSibling(hTreeItem);
}
return searchResult;
}
#if 0
WORD TreeView::addChildNode(DWORD indexImage,const String &textString,const String &parentString,DWORD userData)
{
treeViewItem.mask(TreeViewItem::MaskText|TreeViewItem::MaskImage|TreeViewItem::MaskSelectedImage|TreeViewItem::MaskParam);
treeViewItem.text(textString);
treeViewItem.image(indexImage);
treeViewItem.selectedImage(I_IMAGECALLBACK);
treeViewItem.lParam(userData);
treeViewInsert.parent(hParent);
treeViewInsert.insertAfter(hPrevItem);
treeViewInsert.viewItem(treeViewItem);
insertItem(treeViewInsert);
break;
}
hPrevItem=hTreeItem;
hTreeItem=getNextSibling(hTreeItem);
}
return TRUE;
}
#endif
#if 0
WORD TreeView::addChildNode(DWORD indexImage,const String &textString,const String &parentString,DWORD userData)
{
HTREEITEM hParent(0);
HTREEITEM hTreeItem;
HTREEITEM hPrevItem;
String bufferString;
bufferString.length(255);
hTreeItem=getChild(TVGN_ROOT);
while(hTreeItem)
{
TreeViewItem treeViewItem;
treeViewItem.mask(TVIF_TEXT);
treeViewItem.item(hTreeItem);
treeViewItem.text(bufferString);
getItem(treeViewItem);
if(parentString==treeViewItem.text())
{
hParent=hTreeItem;
while(hTreeItem)
{
hPrevItem=hTreeItem;
hTreeItem=getChild(hTreeItem);
}
TreeViewInsert treeViewInsert;
TreeViewItem treeViewItem;
treeViewItem.mask(TreeViewItem::MaskText|TreeViewItem::MaskImage|TreeViewItem::MaskSelectedImage|TreeViewItem::MaskParam);
treeViewItem.text(textString);
treeViewItem.image(indexImage);
treeViewItem.selectedImage(I_IMAGECALLBACK);
treeViewItem.lParam(userData);
treeViewInsert.parent(hParent);
treeViewInsert.insertAfter(hPrevItem);
treeViewInsert.viewItem(treeViewItem);
insertItem(treeViewInsert);
break;
}
hPrevItem=hTreeItem;
hTreeItem=getNextSibling(hTreeItem);
}
return TRUE;
}
#endif
#if 0
HTREEITEM FindOrAddTreeViewItem(HWND hWndTV,HTREEITEM hParent,int iImage,int iSelectedImage,LPSTR szText,LPARAM lParam)
{
TV_ITEM tvItem; // Temporary item
HTREEITEM hItem; // Handle to item
HTREEITEM hPrevItem; // Handle to previous item
char szBuffer[256]; // Temporary buffer
// Get the first child of the passed in parent
hItem=TreeView_GetChild(hWndTV,hParent);
// Loop through all children, looking for an already existing child.
while(hItem)
{
tvItem.mask= TVIF_TEXT; // We want the text
tvItem.hItem= hItem; // Indicate the item to fetch
tvItem.pszText=szBuffer; // Indicate the buffer
tvItem.cchTextMax=sizeof(szBuffer); // Indicate buffer's size
::TreeView_GetItem(hWndTV,&tvItem); // Fetch, Rover!
if(!lstrcmpi(tvItem.pszText,szText))return hItem;
hPrevItem=hItem; // Remember the last item, since the next line
// of code will eventually put a NULL in the
// hItem variable, and we want to know the
// last item under the parent in case we need
// to add a new item.
// Get the next sibling item in the TreeView, if any.
hItem=::TreeView_GetNextSibling(hWndTV,hItem);
}
// If we made it here, then the item needs to be added onto the end of the list
return AddTreeViewItem ( hWndTV, // Handle of TreeView
hParent, // Parent item
hPrevItem, // Last child in list (from above loop)
iImage, // These are the parameters
iSelectedImage,// passed into this
szText, // function.
lParam //
);
}
#endif
#if 0
if (hWndTreeView)
{
TreeView_SetImageList ( hWndTreeView, hCoasterImageList, 0 );
ImageList_SetBkColor ( hCoasterImageList, GetSysColor ( COLOR_WINDOW ));
FillTreeView ( hWndTreeView );
}
}
#endif
// enum StateFlags{StateFocused=TVIS_FOCUSED,StateSelected=TVIS_SELECTED,
// StateCut=TVIS_CUT,StateDropHilited=TVIS_DROPHILITED,StateBold=TVIS_BOLD,
// StateExpanded=TVIS_EXPANDED,StateExpandedOnce=TVIS_EXPANDEDONCE};
#if 0
TreeViewInfo &treeViewInfo=((TreeViewInfo&)*((TreeViewInfo*)someCallbackData.lParam()));
TreeViewNotify &treeViewNotify=(*((TreeViewNotify*)someCallbackData.lParam()));
if(TreeViewID==((NotifyMessageHeader&)treeViewInfo).idFrom())
{
switch(((NotifyMessageHeader&)treeViewInfo).code())
{
case TVN_SELCHANGING :
return tvnSelChanging(treeViewNotify);
case TVN_SELCHANGED :
return tvnSelChanged(treeViewNotify);
case TVN_GETDISPINFO :
return tvnGetDispInfo(treeViewInfo);
case TVN_SETDISPINFO :
return tvnSetDispInfo(treeViewInfo);
case TVN_ITEMEXPANDING :
return tvnItemExpanding(treeViewInfo);
case TVN_BEGINDRAG :
return tvnBeginDrag(treeViewNotify);
case TVN_BEGINRDRAG :
return tvnBeginRDrag(treeViewNotify);
case TVN_DELETEITEM :
return tvnDeleteItem(treeViewInfo);
case TVN_BEGINLABELEDIT :
return tvnBeginLabelEdit(treeViewInfo);
case TVN_ENDLABELEDIT :
return tvnEndLabelEdit(treeViewInfo);
case TVN_KEYDOWN :
return tvnKeyDown(treeViewInfo);
}
}
#endif
if(((TreeViewItem&)treeViewInfo).state()&TVIS_EXPANDED)
{
((TreeViewItem&)treeViewInfo).image(FolderOpen);
((TreeViewItem&)treeViewInfo).selectedImage(FolderOpen);
}
else
{
((TreeViewItem&)treeViewInfo).image(FolderClosed);
((TreeViewItem&)treeViewInfo).selectedImage(FolderClosed);
}
WNDPROC sOrigProc;
void subClass(HINSTANCE hProcessInstance);
__declspec(dllexport) LONG FAR PASCAL windowProcedure(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
// ********************************************************************************
void subClass(HINSTANCE hProcessInstance)
{
WNDCLASS wndClass;
::GetClassInfo(0,"SysTreeView32",&wndClass);
wndClass.lpszClassName="SysTreeView32Sk";
sOrigProc=wndClass.lpfnWndProc;
wndClass.lpfnWndProc=(WNDPROC)windowProcedure;
wndClass.hInstance=hProcessInstance;
::RegisterClass(&wndClass);
}
long FAR PASCAL windowProcedure(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
if(WM_RBUTTONUP==message)::MessageBeep(0);
return sOrigProc(hWnd,message,wParam,lParam);
}
WORD TreeView::appendNode(NodeType nodeType,DWORD itemIndex,const String &text,DWORD userData,WORD selected)
{
HTREEITEM hInsertItem;
TreeViewItem treeViewItem;
TreeViewInsert treeViewInsert;
// String workString;
// workString=text;
treeViewItem.mask(TreeViewItem::MaskText|TreeViewItem::MaskImage|TreeViewItem::MaskSelectedImage|TreeViewItem::MaskParam);
treeViewItem.text((LPSTR)(String&)text);
treeViewItem.maxText(text.length());
treeViewItem.image(itemIndex);
treeViewItem.selectedImage(I_IMAGECALLBACK);
treeViewItem.lParam(userData);
if(NodeChild==nodeType)treeViewInsert.parent(mLastInsert.insertAfter());
else treeViewInsert.parent(mLastInsert.parent());
treeViewInsert.insertAfter(mLastInsert.insertAfter());
treeViewInsert.viewItem(treeViewItem);
hInsertItem=insertItem(treeViewInsert);
if(!hInsertItem)return FALSE;
if(selected)selectItem(hInsertItem);
return (hInsertItem?TRUE:FALSE);
}