This commit is contained in:
2024-08-07 09:16:27 -04:00
parent fdfadd5c7e
commit 5f971cf684
5200 changed files with 731717 additions and 0 deletions

BIN
imagelst/172.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
imagelst/173.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
imagelst/174.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
imagelst/175.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

25
imagelst/BCCW32.CFG Normal file
View File

@@ -0,0 +1,25 @@
-R
-v
-vi
-H
-H=propsht.csm
-R-
-H-
-4
-Jgx
-x-
-xd-
-RT-
-Og
-Ot
-Z
-O
-Oe
-Ol
-Ob
-OW
-Om
-Op
-Oi
-Ov
-W

BIN
imagelst/BOLT.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
imagelst/CA.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
imagelst/CD.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
imagelst/CDROM.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
imagelst/CHIP.BMP Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

BIN
imagelst/CHIP.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
imagelst/DEVICE.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

82
imagelst/DRAGINFO.HPP Normal file
View File

@@ -0,0 +1,82 @@
#ifndef _IMAGELIST_DRAGINFO_HPP_
#define _IMAGELIST_DRAGINFO_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _IMAGELIST_TREEVIEWITEM_HPP_
#include <imagelst/tvitem.hpp>
#endif
class DragInfo
{
public:
DragInfo(void);
DragInfo(const DragInfo &someDragInfo);
~DragInfo();
DragInfo &operator=(const DragInfo &someDragInfo);
WORD operator==(const DragInfo &someDragInfo)const;
WORD isInDrag(void)const;
void isInDrag(WORD isInDrag);
TreeViewItem dragItem(void)const;
void dragItem(const TreeViewItem &someTreeViewItem);
private:
WORD mIsInDrag;
TreeViewItem mDragItem;
};
inline
DragInfo::DragInfo(void)
: mIsInDrag(FALSE)
{
}
inline
DragInfo::DragInfo(const DragInfo &someDragInfo)
{
*this=someDragInfo;
}
inline
DragInfo::~DragInfo()
{
}
inline
DragInfo &DragInfo::operator=(const DragInfo &someDragInfo)
{
isInDrag(someDragInfo.isInDrag());
dragItem(someDragInfo.dragItem());
return *this;
}
inline
WORD DragInfo::operator==(const DragInfo &someDragInfo)const
{
return (isInDrag()==someDragInfo.isInDrag()&&
dragItem()==someDragInfo.dragItem());
}
inline
WORD DragInfo::isInDrag(void)const
{
return mIsInDrag;
}
inline
void DragInfo::isInDrag(WORD isInDrag)
{
mIsInDrag=isInDrag;
}
inline
TreeViewItem DragInfo::dragItem(void)const
{
return mDragItem;
}
inline
void DragInfo::dragItem(const TreeViewItem &someTreeViewItem)
{
mDragItem=someTreeViewItem;
}
#endif

BIN
imagelst/DRILL.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
imagelst/FDD.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

54
imagelst/FTREE.BAK Normal file
View File

@@ -0,0 +1,54 @@
#ifndef _IMAGELIST_FOLDERTREE_HPP_
#define _IMAGELIST_FOLDERTREE_HPP_
#ifndef _COMMON_CALLBACK_HPP_
#include <common/callback.hpp>
#endif
#ifndef _COMMON_RGBCOLOR_HPP_
#include <common/rgbcolor.hpp>
#endif
#ifndef _COMMON_CALLBACKPOINTER_HPP_
#include <common/cbptr.hpp>
#endif
#ifndef _COMMON_BLOCK_HPP_
#include <common/block.hpp>
#endif
#ifndef _IMAGELIST_TREEVIEW_HPP_
#include <imagelst/treeview.hpp>
#endif
#ifndef _IMAGELIST_IMAGELIST_HPP_
#include <imagelst/imagelst.hpp>
#endif
class TreeViewMessageHeader;
class TreeViewDisplayInfo;
class Rect;
class FolderTree : public TreeView, public ImageList
{
public:
enum{FolderOpen=0,FolderClosed=2};
enum HandlerType{SelChangedHandler,SelChangingHandler,ItemExpandingHandler,ItemExpandedHandler,BeginDragHandler};
FolderTree(GUIWindow &parentWindow,const Rect &winRect=Rect(1,1,320,200),int controlID=101,RGBColor bkColor=RGBColor(::GetSysColor(COLOR_WINDOW)));
virtual ~FolderTree();
void insertHandler(HandlerType handlerType,PureCallback *lpCallback);
void removeHandler(HandlerType handlerType);
protected:
virtual WORD tvnSelChanging(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnSelChanged(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnGetDispInfo(TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnSetDispInfo(TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnItemExpanding(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnItemExpanded(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnBeginDrag(const TreeViewMessageHeader &TreeViewMessageHeader);
virtual WORD tvnBeginRDrag(const TreeViewMessageHeader &TreeViewMessageHeader);
virtual WORD tvnDeleteItem(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnBeginLabelEdit(const TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnEndLabelEdit(const TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnKeyDown(const TreeViewMessageHeader &treeViewMessageHeader);
private:
void callHandler(HandlerType handlerType,CallbackData &someCallbackData);
void initHandlers(void);
Block<CallbackPointer> mEventHandlers;
};
#endif

122
imagelst/FTREE.CPP Normal file
View File

@@ -0,0 +1,122 @@
#include <imagelst/ftree.hpp>
#include <imagelst/tvmsghdr.hpp>
#include <imagelst/tvdisp.hpp>
#include <imagelst/tvkey.hpp>
#include <common/window.hpp>
#include <common/dwindow.hpp>
#include <common/rect.hpp>
FolderTree::FolderTree(GUIWindow &parentWindow,const Rect &winRect,int controlID,RGBColor bkColor)
: TreeView(parentWindow,winRect,controlID,TreeView::TreeHasLines|TreeView::TreeHasButtons|TreeView::TreeLinesAtRoot|TreeView::TreeShowSelAlways),
ImageList(parentWindow.processInstance(),"LIST",16,RGBColor(0,0,255))
{
setBkColor(bkColor);
setImageList(*this);
initHandlers();
}
FolderTree::~FolderTree()
{
}
void FolderTree::insertHandler(HandlerType handlerType,PureCallback *lpCallback)
{
mEventHandlers[(int)handlerType]=CallbackPointer(lpCallback);
}
void FolderTree::removeHandler(HandlerType handlerType)
{
mEventHandlers[(int)handlerType]=CallbackPointer();
}
void FolderTree::callHandler(HandlerType handlerType,CallbackData &someCallbackData)
{
mEventHandlers[(int)handlerType].callback(someCallbackData);
}
void FolderTree::initHandlers(void)
{
for(int handlerIndex=0;handlerIndex<=KeyDownHandler;handlerIndex++)
mEventHandlers.insert(&CallbackPointer());
}
// virual overloads
WORD FolderTree::tvnSelChanging(const TreeViewMessageHeader &treeViewMessageHeader)
{
CallbackData callbackData(0,treeViewMessageHeader.itemOld().lParam());
callHandler(SelChangingHandler,callbackData);
return FALSE;
}
WORD FolderTree::tvnSelChanged(const TreeViewMessageHeader &treeViewMessageHeader)
{
CallbackData callbackData(0,treeViewMessageHeader.itemNew().lParam());
callHandler(SelChangedHandler,callbackData);
return FALSE;
}
WORD FolderTree::tvnItemExpanding(const TreeViewMessageHeader &treeViewMessageHeader)
{
CallbackData callbackData(0,(LPARAM)&treeViewMessageHeader);
callHandler(ItemExpandingHandler,callbackData);
return FALSE;
}
WORD FolderTree::tvnItemExpanded(const TreeViewMessageHeader &treeViewMessageHeader)
{
CallbackData callbackData(0,(LPARAM)&treeViewMessageHeader);
callHandler(ItemExpandedHandler,callbackData);
return FALSE;
}
WORD FolderTree::tvnGetDispInfo(TreeViewDisplayInfo &treeViewDisplayInfo)
{
TreeViewItem tvItem(treeViewDisplayInfo.item());
if(treeViewDisplayInfo.item().state()&TVIS_EXPANDED)
{tvItem.image(FolderOpen);tvItem.selectedImage(FolderOpen);}
else
{tvItem.image(FolderClosed);tvItem.selectedImage(FolderClosed);}
treeViewDisplayInfo.item(tvItem);
return TRUE;
}
WORD FolderTree::tvnSetDispInfo(TreeViewDisplayInfo &/*treeViewDisplayInfo*/)
{
return FALSE;
}
WORD FolderTree::tvnBeginDrag(const TreeViewMessageHeader &treeViewMessageHeader)
{
CallbackData callbackData(0,(LPARAM)&treeViewMessageHeader);
callHandler(BeginDragHandler,callbackData);
return FALSE;
}
WORD FolderTree::tvnBeginRDrag(const TreeViewMessageHeader &/*treeViewMessageHeader*/)
{
return FALSE;
}
WORD FolderTree::tvnDeleteItem(const TreeViewMessageHeader &/*treeViewMessageHeader*/)
{
return FALSE;
}
WORD FolderTree::tvnBeginLabelEdit(const TreeViewDisplayInfo &/*treeViewDisplayInfo*/)
{
return FALSE;
}
WORD FolderTree::tvnEndLabelEdit(const TreeViewDisplayInfo &/*treeViewDisplayInfo*/)
{
return FALSE;
}
WORD FolderTree::tvnKeyDown(const TreeViewKeyDown &treeViewKeyDown)
{
CallbackData callbackData(0,(LPARAM)&treeViewKeyDown);
callHandler(KeyDownHandler,callbackData);
return FALSE;
}

56
imagelst/FTREE.HPP Normal file
View File

@@ -0,0 +1,56 @@
#ifndef _IMAGELIST_FOLDERTREE_HPP_
#define _IMAGELIST_FOLDERTREE_HPP_
#ifndef _COMMON_CALLBACK_HPP_
#include <common/callback.hpp>
#endif
#ifndef _COMMON_RGBCOLOR_HPP_
#include <common/rgbcolor.hpp>
#endif
#ifndef _COMMON_CALLBACKPOINTER_HPP_
#include <common/cbptr.hpp>
#endif
#ifndef _COMMON_BLOCK_HPP_
#include <common/block.hpp>
#endif
#ifndef _IMAGELIST_TREEVIEW_HPP_
#include <imagelst/treeview.hpp>
#endif
#ifndef _IMAGELIST_IMAGELIST_HPP_
#include <imagelst/imagelst.hpp>
#endif
class TreeViewMessageHeader;
class TreeViewDisplayInfo;
class TreeViewKeyDown;
class Rect;
class FolderTree : public TreeView, public ImageList
{
public:
enum{FolderOpen=0,FolderClosed=2};
enum HandlerType{SelChangedHandler,SelChangingHandler,ItemExpandingHandler,
ItemExpandedHandler,BeginDragHandler,KeyDownHandler};
FolderTree(GUIWindow &parentWindow,const Rect &winRect=Rect(1,1,320,200),int controlID=101,RGBColor bkColor=RGBColor(GetSysColor(COLOR_WINDOW)));
virtual ~FolderTree();
void insertHandler(HandlerType handlerType,PureCallback *lpCallback);
void removeHandler(HandlerType handlerType);
protected:
virtual WORD tvnSelChanging(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnSelChanged(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnGetDispInfo(TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnSetDispInfo(TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnItemExpanding(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnItemExpanded(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnBeginDrag(const TreeViewMessageHeader &TreeViewMessageHeader);
virtual WORD tvnBeginRDrag(const TreeViewMessageHeader &TreeViewMessageHeader);
virtual WORD tvnDeleteItem(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnBeginLabelEdit(const TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnEndLabelEdit(const TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnKeyDown(const TreeViewKeyDown &treeViewKeyDown);
private:
void callHandler(HandlerType handlerType,CallbackData &someCallbackData);
void initHandlers(void);
Block<CallbackPointer> mEventHandlers;
};
#endif

208
imagelst/FTREE.MAK Normal file
View File

@@ -0,0 +1,208 @@
# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
!IF "$(CFG)" == ""
CFG=Ftree - Win32 Debug
!MESSAGE No configuration specified. Defaulting to Ftree - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "Ftree - Win32 Release" && "$(CFG)" != "Ftree - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Ftree.mak" CFG="Ftree - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "Ftree - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "Ftree - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "Ftree - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
OUTDIR=.
INTDIR=.
ALL : "$(OUTDIR)\Ftree.exe"
CLEAN :
-@erase "$(INTDIR)\Ftree.obj"
-@erase "$(OUTDIR)\Ftree.exe"
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
/Fp"Ftree.pch" /YX /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Ftree.bsc"
BSC32_SBRS= \
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
odbccp32.lib /nologo /subsystem:console /incremental:no\
/pdb:"$(OUTDIR)/Ftree.pdb" /machine:I386 /out:"$(OUTDIR)/Ftree.exe"
LINK32_OBJS= \
"$(INTDIR)\Ftree.obj"
"$(OUTDIR)\Ftree.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "Ftree - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
OUTDIR=.
INTDIR=.
ALL : "$(OUTDIR)\Ftree.exe"
CLEAN :
-@erase "$(INTDIR)\Ftree.obj"
-@erase "$(INTDIR)\vc40.idb"
-@erase "$(INTDIR)\vc40.pdb"
-@erase "$(OUTDIR)\Ftree.exe"
-@erase "$(OUTDIR)\Ftree.ilk"
-@erase "$(OUTDIR)\Ftree.pdb"
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"\
/Fp"Ftree.pch" /YX /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Ftree.bsc"
BSC32_SBRS= \
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
odbccp32.lib /nologo /subsystem:console /incremental:yes\
/pdb:"$(OUTDIR)/Ftree.pdb" /debug /machine:I386 /out:"$(OUTDIR)/Ftree.exe"
LINK32_OBJS= \
"$(INTDIR)\Ftree.obj"
"$(OUTDIR)\Ftree.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
.c.obj:
$(CPP) $(CPP_PROJ) $<
.cpp.obj:
$(CPP) $(CPP_PROJ) $<
.cxx.obj:
$(CPP) $(CPP_PROJ) $<
.c.sbr:
$(CPP) $(CPP_PROJ) $<
.cpp.sbr:
$(CPP) $(CPP_PROJ) $<
.cxx.sbr:
$(CPP) $(CPP_PROJ) $<
################################################################################
# Begin Target
# Name "Ftree - Win32 Release"
# Name "Ftree - Win32 Debug"
!IF "$(CFG)" == "Ftree - Win32 Release"
!ELSEIF "$(CFG)" == "Ftree - Win32 Debug"
!ENDIF
################################################################################
# Begin Source File
SOURCE=.\Ftree.cpp
DEP_CPP_FTREE=\
{$(INCLUDE)}"\.\draginfo.hpp"\
{$(INCLUDE)}"\.\ftree.hpp"\
{$(INCLUDE)}"\.\hittest.hpp"\
{$(INCLUDE)}"\.\imagelst.hpp"\
{$(INCLUDE)}"\.\treeview.hpp"\
{$(INCLUDE)}"\.\tvinsert.hpp"\
{$(INCLUDE)}"\.\tvitem.hpp"\
{$(INCLUDE)}"\common\assert.hpp"\
{$(INCLUDE)}"\common\block.hpp"\
{$(INCLUDE)}"\common\block.tpp"\
{$(INCLUDE)}"\common\callback.hpp"\
{$(INCLUDE)}"\common\callback.tpp"\
{$(INCLUDE)}"\common\cbdata.hpp"\
{$(INCLUDE)}"\common\cbptr.hpp"\
{$(INCLUDE)}"\common\commctrl.hpp"\
{$(INCLUDE)}"\common\dwindow.hpp"\
{$(INCLUDE)}"\common\fixup.hpp"\
{$(INCLUDE)}"\common\gdata.hpp"\
{$(INCLUDE)}"\common\gdata.tpp"\
{$(INCLUDE)}"\common\gdiobj.hpp"\
{$(INCLUDE)}"\common\iconinfo.hpp"\
{$(INCLUDE)}"\common\instance.hpp"\
{$(INCLUDE)}"\common\pcallbck.hpp"\
{$(INCLUDE)}"\common\pen.hpp"\
{$(INCLUDE)}"\common\point.hpp"\
{$(INCLUDE)}"\common\purebmp.hpp"\
{$(INCLUDE)}"\common\purehdc.hpp"\
{$(INCLUDE)}"\common\pureicon.hpp"\
{$(INCLUDE)}"\common\pvector.hpp"\
{$(INCLUDE)}"\common\pvector.tpp"\
{$(INCLUDE)}"\common\rect.hpp"\
{$(INCLUDE)}"\common\rgbcolor.hpp"\
{$(INCLUDE)}"\common\stdlib.hpp"\
{$(INCLUDE)}"\common\string.hpp"\
{$(INCLUDE)}"\common\types.hpp"\
{$(INCLUDE)}"\common\vhandler.hpp"\
{$(INCLUDE)}"\common\window.hpp"\
{$(INCLUDE)}"\common\windows.hpp"\
{$(INCLUDE)}"\common\windowsx.hpp"\
"$(INTDIR)\Ftree.obj" : $(SOURCE) $(DEP_CPP_FTREE) "$(INTDIR)"
# End Source File
# End Target
# End Project
################################################################################

BIN
imagelst/HDD.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

115
imagelst/HITTEST.HPP Normal file
View File

@@ -0,0 +1,115 @@
#ifndef _IMAGELIST_HITTEST_HPP_
#define _IMAGELIST_HITTEST_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_COMMCTRL_HPP_
#include <common/commctrl.hpp>
#endif
#ifndef _COMMON_GDIPOINT_HPP_
#include <common/gdipoint.hpp>
#endif
class HitTestInfo : private TV_HITTESTINFO
{
public:
enum{HitTestAbove=TVHT_ABOVE,HitTestBelow=TVHT_BELOW,HitTestNoWhere=TVHT_NOWHERE,
HitTestOnItem=TVHT_ONITEM,HitTestOnItemButton=TVHT_ONITEMBUTTON,
HitTestOnItemIcon=TVHT_ONITEMICON,HitTestOnItemIndent=TVHT_ONITEMINDENT,
HitTestOnItemLabel=TVHT_ONITEMLABEL,HitTestOnItemRight=TVHT_ONITEMRIGHT,
HitTestToLeft=TVHT_TOLEFT,HitTestToRight=TVHT_TORIGHT};
HitTestInfo(void);
HitTestInfo(const HitTestInfo &someHitTestInfo);
~HitTestInfo();
HitTestInfo &operator=(const HitTestInfo &someHitTestInfo);
WORD operator==(const HitTestInfo &someHitTestInfo);
operator TV_HITTESTINFO&(void);
GDIPoint point(void)const;
void point(const GDIPoint &somePoint);
UINT flags(void)const;
void flags(UINT flags);
HTREEITEM item(void)const;
void item(HTREEITEM item);
private:
};
inline
HitTestInfo::HitTestInfo(void)
{
point(GDIPoint(0,0));
flags(0);
item(0);
}
inline
HitTestInfo::HitTestInfo(const HitTestInfo &someHitTestInfo)
{
*this=someHitTestInfo;
}
inline
HitTestInfo::~HitTestInfo()
{
}
inline
HitTestInfo &HitTestInfo::operator=(const HitTestInfo &someHitTestInfo)
{
point(someHitTestInfo.point());
flags(someHitTestInfo.flags());
item(someHitTestInfo.item());
return *this;
}
inline
WORD HitTestInfo::operator==(const HitTestInfo &someHitTestInfo)
{
return (point()==someHitTestInfo.point()&&
flags()==someHitTestInfo.flags()&&
item()==someHitTestInfo.item());
}
inline
HitTestInfo::operator TV_HITTESTINFO&(void)
{
return *this;
}
inline
GDIPoint HitTestInfo::point(void)const
{
return GDIPoint(TV_HITTESTINFO::pt.x,TV_HITTESTINFO::pt.y);
}
inline
void HitTestInfo::point(const GDIPoint &somePoint)
{
TV_HITTESTINFO::pt.x=somePoint.x();
TV_HITTESTINFO::pt.y=somePoint.y();
}
inline
UINT HitTestInfo::flags(void)const
{
return TV_HITTESTINFO::flags;
}
inline
void HitTestInfo::flags(UINT flags)
{
TV_HITTESTINFO::flags=flags;
}
inline
HTREEITEM HitTestInfo::item(void)const
{
return TV_HITTESTINFO::hItem;
}
inline
void HitTestInfo::item(HTREEITEM item)
{
TV_HITTESTINFO::hItem=item;
}
#endif

8026
imagelst/IMAGE.DOC Normal file

File diff suppressed because it is too large Load Diff

128
imagelst/IMAGELST.BAK Normal file
View File

@@ -0,0 +1,128 @@
#include <imagelst/imagelst.hpp>
#include <imagelst/imgeinfo.hpp>
#include <common/gdipoint.hpp>
#include <common/point.hpp>
#include <common/purebmp.hpp>
#include <common/pureicon.hpp>
ImageList::ImageList(HINSTANCE hProcessInstance,const String &bitmapName,DWORD widthImage,RGBColor maskColor,DWORD growthFactor)
: mhImageList(0), mhProcessInstance(hProcessInstance)
{
mhImageList=::ImageList_LoadBitmap(hProcessInstance,bitmapName,widthImage,growthFactor,maskColor);
}
ImageList &ImageList::operator=(HIMAGELIST hImageList)
{
destroyImageList();
mhImageList=hImageList;
return *this;
}
ImageList &ImageList::operator=(const ImageList &someImageList)
{
DWORD sourceImageListEntries;
Point imageDimensions;
ImageType imageType;
if(!mhProcessInstance)return *this;
if(someImageList.isOkay()&&(0!=(sourceImageListEntries=someImageList.size())))
{
someImageList.imageDimensions(imageDimensions);
imageType=someImageList.imageType();
if(createImageList(imageDimensions.x(),imageDimensions.y(),imageType))
{
for(DWORD itemIndex=0;itemIndex<sourceImageListEntries;itemIndex++)
insertImage(PureIcon(someImageList.extractIcon(itemIndex)));
}
}
return *this;
}
WORD ImageList::drawImage(PureDevice &somePureDevice,const Point &xyPoint,DWORD itemIndex,DrawFlag drawFlag)
{
if(!isOkay())return FALSE;
return ::ImageList_Draw(mhImageList,itemIndex,somePureDevice,xyPoint.x(),xyPoint.y(),(UINT)drawFlag);
}
WORD ImageList::imageDimensions(Point &imageDimensions)const
{
int cxDimension;
int cyDimension;
WORD returnCode;
if(!isOkay())return FALSE;
returnCode=::ImageList_GetIconSize(mhImageList,&cxDimension,&cyDimension);
imageDimensions.x(cxDimension);
imageDimensions.y(cyDimension);
return returnCode;
}
BOOL ImageList::beginDrag(DWORD itemIndex,const GDIPoint &dragPoint)const
{
if(!isOkay())return FALSE;
return ImageList_BeginDrag(mhImageList,itemIndex,dragPoint.x(),dragPoint.y());
}
BOOL ImageList::dragMove(const GDIPoint &dragPoint)const
{
return ImageList_DragMove(dragPoint.x(),dragPoint.y());
}
BOOL ImageList::dragEnter(HWND hwndLock,const GDIPoint &imagePoint)const
{
return ImageList_DragEnter(hwndLock,imagePoint.x(),imagePoint.y());
}
BOOL ImageList::dragLeave(HWND hwndLock)const
{
return ImageList_DragLeave(hwndLock);
}
BOOL ImageList::setDragCursorImage(int itemIndex,const GDIPoint &hotSpot)
{
if(!isOkay())return FALSE;
return ImageList_SetDragCursorImage(mhImageList,itemIndex,hotSpot.x(),hotSpot.y());
}
WORD ImageList::insertImage(const PureBitmap &colorBitmap)
{
return insertImage(colorBitmap,PureBitmap());
}
WORD ImageList::insertImage(const PureBitmap &colorBitmap,const PureBitmap &maskBitmap)
{
if(!isOkay())return FALSE;
if(maskBitmap.isOkay())return ::ImageList_Add(mhImageList,colorBitmap,maskBitmap);
return ::ImageList_Add(mhImageList,colorBitmap,0);
}
WORD ImageList::insertImage(const PureBitmap &colorBitmap,const RGBColor &maskColor)
{
if(!isOkay())return FALSE;
return ::ImageList_AddMasked(mhImageList,colorBitmap,(COLORREF)maskColor);
}
WORD ImageList::replaceImage(DWORD itemIndex,const PureBitmap &colorBitmap,const PureBitmap &maskBitmap)
{
if(!isOkay())return FALSE;
return ::ImageList_Replace(mhImageList,itemIndex,colorBitmap,maskBitmap);
}
WORD ImageList::insertImage(PureIcon &somePureIcon)
{
if(!isOkay())return FALSE;
return !::ImageList_AddIcon(mhImageList,(HICON)somePureIcon);
}
WORD ImageList::replaceImage(DWORD itemIndex,PureIcon &somePureIcon)
{
if(!isOkay())return FALSE;
return ::ImageList_ReplaceIcon(mhImageList,itemIndex,(HICON)somePureIcon);
}
BOOL ImageList::imageInfo(int itemIndex,ImageInfo &imageInfo)
{
if(!isOkay())return FALSE;
return ::ImageList_GetImageInfo(mhImageList,itemIndex,&((_IMAGEINFO&)imageInfo));
}

128
imagelst/IMAGELST.CPP Normal file
View File

@@ -0,0 +1,128 @@
#include <imagelst/imagelst.hpp>
#include <imagelst/imgeinfo.hpp>
#include <common/gdipoint.hpp>
#include <common/point.hpp>
#include <common/purebmp.hpp>
#include <common/pureicon.hpp>
ImageList::ImageList(HINSTANCE hProcessInstance,const String &bitmapName,DWORD widthImage,RGBColor maskColor,DWORD growthFactor)
: mhImageList(0), mhProcessInstance(hProcessInstance)
{
mhImageList=::ImageList_LoadBitmap(hProcessInstance,bitmapName,widthImage,growthFactor,maskColor);
}
ImageList &ImageList::operator=(HIMAGELIST hImageList)
{
destroyImageList();
mhImageList=hImageList;
return *this;
}
ImageList &ImageList::operator=(const ImageList &someImageList)
{
DWORD sourceImageListEntries;
Point imageDimensions;
ImageType imageType;
if(!mhProcessInstance)return *this;
if(someImageList.isOkay()&&(0!=(sourceImageListEntries=someImageList.size())))
{
someImageList.imageDimensions(imageDimensions);
imageType=someImageList.imageType();
if(createImageList(imageDimensions.x(),imageDimensions.y(),imageType))
{
for(DWORD itemIndex=0;itemIndex<sourceImageListEntries;itemIndex++)
insertImage(PureIcon(someImageList.extractIcon(itemIndex)));
}
}
return *this;
}
WORD ImageList::drawImage(PureDevice &somePureDevice,const Point &xyPoint,DWORD itemIndex,DrawFlag drawFlag)
{
if(!isOkay())return FALSE;
return ::ImageList_Draw(mhImageList,itemIndex,somePureDevice,xyPoint.x(),xyPoint.y(),(UINT)drawFlag);
}
WORD ImageList::imageDimensions(Point &imageDimensions)const
{
int cxDimension;
int cyDimension;
WORD returnCode;
if(!isOkay())return FALSE;
returnCode=::ImageList_GetIconSize(mhImageList,&cxDimension,&cyDimension);
imageDimensions.x(cxDimension);
imageDimensions.y(cyDimension);
return returnCode;
}
BOOL ImageList::beginDrag(DWORD itemIndex,const GDIPoint &dragPoint)const
{
if(!isOkay())return FALSE;
return ImageList_BeginDrag(mhImageList,itemIndex,dragPoint.x(),dragPoint.y());
}
BOOL ImageList::dragMove(const GDIPoint &dragPoint)const
{
return ImageList_DragMove(dragPoint.x(),dragPoint.y());
}
BOOL ImageList::dragEnter(HWND hwndLock,const GDIPoint &imagePoint)const
{
return ImageList_DragEnter(hwndLock,imagePoint.x(),imagePoint.y());
}
BOOL ImageList::dragLeave(HWND hwndLock)const
{
return ImageList_DragLeave(hwndLock);
}
BOOL ImageList::setDragCursorImage(int itemIndex,const GDIPoint &hotSpot)
{
if(!isOkay())return FALSE;
return ImageList_SetDragCursorImage(mhImageList,itemIndex,hotSpot.x(),hotSpot.y());
}
WORD ImageList::insertImage(const PureBitmap &colorBitmap)
{
return insertImage(colorBitmap,PureBitmap());
}
WORD ImageList::insertImage(const PureBitmap &colorBitmap,const PureBitmap &maskBitmap)
{
if(!isOkay())return FALSE;
if(maskBitmap.isOkay())return ::ImageList_Add(mhImageList,colorBitmap,maskBitmap);
return ::ImageList_Add(mhImageList,colorBitmap,0);
}
WORD ImageList::insertImage(const PureBitmap &colorBitmap,const RGBColor &maskColor)
{
if(!isOkay())return FALSE;
return ::ImageList_AddMasked(mhImageList,colorBitmap,(COLORREF)maskColor);
}
WORD ImageList::replaceImage(DWORD itemIndex,const PureBitmap &colorBitmap,const PureBitmap &maskBitmap)
{
if(!isOkay())return FALSE;
return ::ImageList_Replace(mhImageList,itemIndex,colorBitmap,maskBitmap);
}
WORD ImageList::insertImage(PureIcon &somePureIcon)
{
if(!isOkay())return FALSE;
return !::ImageList_AddIcon(mhImageList,(HICON)somePureIcon);
}
WORD ImageList::replaceImage(DWORD itemIndex,PureIcon &somePureIcon)
{
if(!isOkay())return FALSE;
return ::ImageList_ReplaceIcon(mhImageList,itemIndex,(HICON)somePureIcon);
}
BOOL ImageList::imageInfo(int itemIndex,ImageInfo &imageInfo)
{
if(!isOkay())return FALSE;
return ::ImageList_GetImageInfo(mhImageList,itemIndex,&((_IMAGEINFO&)imageInfo));
}

29
imagelst/IMAGELST.DSW Normal file
View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "imagelst"=.\imagelst.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

205
imagelst/IMAGELST.HPP Normal file
View File

@@ -0,0 +1,205 @@
#ifndef _IMAGELIST_IMAGELIST_HPP_
#define _IMAGELIST_IMAGELIST_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_COMMCTRL_HPP_
#include <common/commctrl.hpp>
#endif
#ifndef _COMMON_RGBCOLOR_HPP_
#include <common/rgbcolor.hpp>
#endif
class GDIPoint;
class Point;
class PureBitmap;
class PureDevice;
class PureIcon;
class String;
class ImageInfo;
class ImageList
{
public:
enum ImageType{ImageMasked=0x0000,ImageUnMasked=0x0001};
enum DrawFlag{DrawNormal=ILD_NORMAL,DrawTransparent=ILD_TRANSPARENT,DrawMask=ILD_MASK,
DrawImage=ILD_IMAGE,DrawBlend25=ILD_BLEND25,DrawBlend50=ILD_BLEND50,
DrawOverlayMask=ILD_OVERLAYMASK};
ImageList(HINSTANCE hProcessInstance=(HINSTANCE)0);
ImageList(HIMAGELIST hImageList,HINSTANCE hProcessInstance=(HINSTANCE)0,ImageType imageType=ImageUnMasked);
ImageList(const ImageList &someImageList);
ImageList(HINSTANCE hProcessInstance,const String &bitmapName,DWORD widthImage,RGBColor maskColor=RGBColor(),DWORD growthFactor=1);
ImageList(HINSTANCE hProcessInstance,DWORD widthImage,DWORD heightImage,ImageType imageType=ImageUnMasked,DWORD initialCount=0,DWORD growthFactor=1);
virtual ~ImageList();
ImageList &operator=(const ImageList &someImageList);
ImageList &operator=(HIMAGELIST hImageList);
WORD operator==(const ImageList &someImageList);
operator HIMAGELIST(void);
WORD insertImage(HBITMAP hBitmap);
WORD insertImage(const PureBitmap &colorBitmap);
WORD insertImage(const PureBitmap &colorBitmap,const PureBitmap &maskBitmap);
WORD insertImage(const PureBitmap &colorBitmap,const RGBColor &maskColor);
WORD insertImage(PureIcon &somePureIcon);
WORD removeImage(DWORD itemIndex);
WORD replaceImage(DWORD itemIndex,const PureBitmap &colorBitmap,const PureBitmap &maskBitmap);
WORD replaceImage(DWORD itemIndex,PureIcon &somePureIcon);
BOOL beginDrag(DWORD itemIndex,const GDIPoint &dragPoint)const;
BOOL dragMove(const GDIPoint &dragPoint)const;
BOOL dragEnter(HWND hwndLock,const GDIPoint &imagePoint)const;
BOOL dragLeave(HWND hwndLock)const;
BOOL dragShowNoLock(BOOL showFlag)const;
BOOL setDragCursorImage(int itemIndex,const GDIPoint &hotSpot);
void endDrag(void)const;
DWORD size(void)const;
RGBColor setBkColor(RGBColor bkGndColor=RGBColor((COLORREF)CLR_NONE));
RGBColor getBkColor(void)const;
WORD drawImage(PureDevice &somePureDevice,const Point &xyPoint,DWORD itemIndex,DrawFlag drawFlag=DrawNormal);
WORD setOverlayImage(DWORD itemIndex,DrawFlag drawFlag);
BOOL imageInfo(int itemIndex,ImageInfo &imageInfo);
WORD isOkay(void)const;
private:
ImageType imageType(void)const;
WORD imageDimensions(Point &imageDimensions)const;
HICON extractIcon(DWORD itemIndex)const;
void destroyImageList(void);
WORD createImageList(DWORD widthImage,DWORD heightImage,ImageType imageType=ImageUnMasked,DWORD initialCount=0,DWORD growthFactor=1);
HIMAGELIST mhImageList;
HINSTANCE mhProcessInstance;
ImageType mImageType;
};
inline
ImageList::ImageList(HINSTANCE hProcessInstance)
: mhImageList(0), mImageType(ImageUnMasked), mhProcessInstance(hProcessInstance)
{
}
inline
ImageList::ImageList(HIMAGELIST hImageList,HINSTANCE hProcessInstance,ImageType imageType)
: mhImageList(hImageList), mhProcessInstance(hProcessInstance), mImageType(imageType)
{
}
inline
ImageList::ImageList(HINSTANCE hProcessInstance,DWORD widthImage,DWORD heightImage,ImageType imageType,DWORD initialCount,DWORD growthFactor)
: mhImageList(0), mImageType(ImageUnMasked), mhProcessInstance(hProcessInstance)
{
createImageList(widthImage,heightImage,imageType,initialCount,growthFactor);
}
inline
ImageList::ImageList(const ImageList &someImageList)
{
*this=someImageList;
}
inline
ImageList::~ImageList()
{
destroyImageList();
}
inline
WORD ImageList::operator==(const ImageList &/*someImageList*/)
{
return FALSE;
}
inline
WORD ImageList::createImageList(DWORD widthImage,DWORD heightImage,ImageType imageType,DWORD initialCount,DWORD growthFactor)
{
destroyImageList();
mhImageList=::ImageList_Create(widthImage,heightImage,imageType,initialCount,growthFactor);
return isOkay();
}
inline
void ImageList::destroyImageList(void)
{
if(!isOkay())return;
::ImageList_Destroy(mhImageList);
mhImageList=0;
}
inline
ImageList::operator HIMAGELIST(void)
{
return mhImageList;
}
inline
WORD ImageList::insertImage(HBITMAP hBitmap)
{
if(!isOkay())return FALSE;
return ::ImageList_Add(mhImageList,hBitmap,0);
}
inline
WORD ImageList::removeImage(DWORD itemIndex)
{
if(!isOkay())return FALSE;
return ::ImageList_Remove(mhImageList,itemIndex);
}
inline
DWORD ImageList::size(void)const
{
if(!isOkay())return FALSE;
return ::ImageList_GetImageCount(mhImageList);
}
inline
RGBColor ImageList::setBkColor(RGBColor bkGndColor)
{
if(!isOkay())return RGBColor((COLORREF)0);
return RGBColor(::ImageList_SetBkColor(mhImageList,(COLORREF)bkGndColor));
}
inline
RGBColor ImageList::getBkColor(void)const
{
if(!isOkay())return RGBColor((COLORREF)0);
return RGBColor(::ImageList_GetBkColor(mhImageList));
}
inline
WORD ImageList::setOverlayImage(DWORD itemIndex,DrawFlag drawFlag)
{
if(!isOkay())return FALSE;
return ::ImageList_SetOverlayImage(mhImageList,itemIndex,(int)drawFlag);
}
inline
ImageList::ImageType ImageList::imageType(void)const
{
return mImageType;
}
inline
HICON ImageList::extractIcon(DWORD itemIndex)const
{
if(!isOkay())return FALSE;
return ::ImageList_ExtractIcon(mhProcessInstance,mhImageList,itemIndex);
}
inline
void ImageList::endDrag(void)const
{
if(!isOkay())return;
::ImageList_EndDrag();
}
inline
BOOL ImageList::dragShowNoLock(BOOL showFlag)const
{
if(!isOkay())return FALSE;
return ::ImageList_DragShowNolock(showFlag);
}
inline
WORD ImageList::isOkay(void)const
{
return (mhImageList?TRUE:FALSE);
}
#endif

BIN
imagelst/IMAGELST.IDE Normal file

Binary file not shown.

449
imagelst/IMAGELST.MAK Normal file
View File

@@ -0,0 +1,449 @@
# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
!IF "$(CFG)" == ""
CFG=imagelst - Win32 Debug
!MESSAGE No configuration specified. Defaulting to imagelst - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "imagelst - Win32 Release" && "$(CFG)" !=\
"imagelst - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Imagelst.mak" CFG="imagelst - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "imagelst - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "imagelst - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
# PROP Target_Last_Scanned "imagelst - Win32 Debug"
CPP=cl.exe
!IF "$(CFG)" == "imagelst - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
OUTDIR=.\Release
INTDIR=.\Release
ALL : "$(OUTDIR)\Imagelst.lib"
CLEAN :
-@erase "$(INTDIR)\Ftree.obj"
-@erase "$(INTDIR)\Imagelst.obj"
-@erase "$(INTDIR)\Stdtmpl.obj"
-@erase "$(INTDIR)\Treeview.obj"
-@erase "$(OUTDIR)\Imagelst.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/Imagelst.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Release/
CPP_SBRS=.\.
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Imagelst.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
LIB32_FLAGS=/nologo /out:"$(OUTDIR)/Imagelst.lib"
LIB32_OBJS= \
"$(INTDIR)\Ftree.obj" \
"$(INTDIR)\Imagelst.obj" \
"$(INTDIR)\Stdtmpl.obj" \
"$(INTDIR)\Treeview.obj"
"$(OUTDIR)\Imagelst.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ELSEIF "$(CFG)" == "imagelst - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "msvcobj"
# PROP Intermediate_Dir "msvcobj"
# PROP Target_Dir ""
OUTDIR=.\msvcobj
INTDIR=.\msvcobj
ALL : "..\exe\msimglst.lib"
CLEAN :
-@erase "$(INTDIR)\Ftree.obj"
-@erase "$(INTDIR)\Imagelst.obj"
-@erase "$(INTDIR)\Stdtmpl.obj"
-@erase "$(INTDIR)\Treeview.obj"
-@erase "..\exe\msimglst.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /YX /c
CPP_PROJ=/nologo /Zp1 /MTd /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D\
"__FLAT__" /D "STRICT" /Fp"$(INTDIR)/Imagelst.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\msvcobj/
CPP_SBRS=.\.
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Imagelst.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\exe\msimglst.lib"
LIB32_FLAGS=/nologo /out:"..\exe\msimglst.lib"
LIB32_OBJS= \
"$(INTDIR)\Ftree.obj" \
"$(INTDIR)\Imagelst.obj" \
"$(INTDIR)\Stdtmpl.obj" \
"$(INTDIR)\Treeview.obj"
"..\exe\msimglst.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ENDIF
.c{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.c{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
################################################################################
# Begin Target
# Name "imagelst - Win32 Release"
# Name "imagelst - Win32 Debug"
!IF "$(CFG)" == "imagelst - Win32 Release"
!ELSEIF "$(CFG)" == "imagelst - Win32 Debug"
!ENDIF
################################################################################
# Begin Source File
SOURCE=.\Treeview.cpp
!IF "$(CFG)" == "imagelst - Win32 Release"
DEP_CPP_TREEV=\
{$(INCLUDE)}"\.\Hittest.hpp"\
{$(INCLUDE)}"\.\Imagelst.hpp"\
{$(INCLUDE)}"\.\Treeview.hpp"\
{$(INCLUDE)}"\.\Tvdisp.hpp"\
{$(INCLUDE)}"\.\Tvinsert.hpp"\
{$(INCLUDE)}"\.\Tvitem.hpp"\
{$(INCLUDE)}"\.\Tvkey.hpp"\
{$(INCLUDE)}"\.\Tvmsghdr.hpp"\
{$(INCLUDE)}"\Common\Block.hpp"\
{$(INCLUDE)}"\Common\Block.tpp"\
{$(INCLUDE)}"\Common\Callback.hpp"\
{$(INCLUDE)}"\Common\Callback.tpp"\
{$(INCLUDE)}"\Common\Cbdata.hpp"\
{$(INCLUDE)}"\Common\Cbdatahk.hpp"\
{$(INCLUDE)}"\Common\Cbptr.hpp"\
{$(INCLUDE)}"\Common\Commctrl.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Gdipoint.hpp"\
{$(INCLUDE)}"\Common\Guiwnd.hpp"\
{$(INCLUDE)}"\Common\Hookproc.hpp"\
{$(INCLUDE)}"\Common\Notify.hpp"\
{$(INCLUDE)}"\Common\Pcallbck.hpp"\
{$(INCLUDE)}"\Common\Point.hpp"\
{$(INCLUDE)}"\Common\Rect.hpp"\
{$(INCLUDE)}"\Common\Rgbcolor.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Vhandler.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
{$(INCLUDE)}"\Common\Windowsx.hpp"\
"$(INTDIR)\Treeview.obj" : $(SOURCE) $(DEP_CPP_TREEV) "$(INTDIR)"
!ELSEIF "$(CFG)" == "imagelst - Win32 Debug"
DEP_CPP_TREEV=\
{$(INCLUDE)}"\.\Hittest.hpp"\
{$(INCLUDE)}"\.\Treeview.hpp"\
{$(INCLUDE)}"\.\Tvdisp.hpp"\
{$(INCLUDE)}"\.\Tvitem.hpp"\
{$(INCLUDE)}"\.\Tvkey.hpp"\
{$(INCLUDE)}"\.\Tvmsghdr.hpp"\
{$(INCLUDE)}"\Common\Block.hpp"\
{$(INCLUDE)}"\Common\Block.tpp"\
{$(INCLUDE)}"\Common\Callback.hpp"\
{$(INCLUDE)}"\Common\Callback.tpp"\
{$(INCLUDE)}"\Common\Cbdata.hpp"\
{$(INCLUDE)}"\Common\Cbptr.hpp"\
{$(INCLUDE)}"\Common\Commctrl.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Gdipoint.hpp"\
{$(INCLUDE)}"\Common\Guiwnd.hpp"\
{$(INCLUDE)}"\Common\Notify.hpp"\
{$(INCLUDE)}"\Common\Pcallbck.hpp"\
{$(INCLUDE)}"\Common\Point.hpp"\
{$(INCLUDE)}"\Common\Rect.hpp"\
{$(INCLUDE)}"\Common\Vhandler.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
{$(INCLUDE)}"\Common\Windowsx.hpp"\
"$(INTDIR)\Treeview.obj" : $(SOURCE) $(DEP_CPP_TREEV) "$(INTDIR)"
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\Imagelst.cpp
DEP_CPP_IMAGE=\
{$(INCLUDE)}"\.\Imagelst.hpp"\
{$(INCLUDE)}"\.\Imgeinfo.hpp"\
{$(INCLUDE)}"\common\assert.hpp"\
{$(INCLUDE)}"\Common\Commctrl.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Fixup.hpp"\
{$(INCLUDE)}"\Common\Gdata.hpp"\
{$(INCLUDE)}"\Common\Gdata.tpp"\
{$(INCLUDE)}"\Common\Gdiobj.hpp"\
{$(INCLUDE)}"\Common\Gdipoint.hpp"\
{$(INCLUDE)}"\Common\Iconinfo.hpp"\
{$(INCLUDE)}"\Common\Pen.hpp"\
{$(INCLUDE)}"\Common\Point.hpp"\
{$(INCLUDE)}"\Common\Purebmp.hpp"\
{$(INCLUDE)}"\Common\Purehdc.hpp"\
{$(INCLUDE)}"\Common\Pureicon.hpp"\
{$(INCLUDE)}"\Common\Pvector.hpp"\
{$(INCLUDE)}"\Common\Pvector.tpp"\
{$(INCLUDE)}"\Common\Rect.hpp"\
{$(INCLUDE)}"\Common\Rgbcolor.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Types.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
"$(INTDIR)\Imagelst.obj" : $(SOURCE) $(DEP_CPP_IMAGE) "$(INTDIR)"
# End Source File
################################################################################
# Begin Source File
SOURCE=.\Stdtmpl.cpp
!IF "$(CFG)" == "imagelst - Win32 Release"
DEP_CPP_STDTM=\
{$(INCLUDE)}"\.\Imagelst.hpp"\
{$(INCLUDE)}"\.\Treeview.hpp"\
{$(INCLUDE)}"\.\Tvinsert.hpp"\
{$(INCLUDE)}"\.\Tvitem.hpp"\
{$(INCLUDE)}"\Common\Block.hpp"\
{$(INCLUDE)}"\Common\Block.tpp"\
{$(INCLUDE)}"\Common\Callback.hpp"\
{$(INCLUDE)}"\Common\Callback.tpp"\
{$(INCLUDE)}"\Common\Cbdata.hpp"\
{$(INCLUDE)}"\Common\Cbdatahk.hpp"\
{$(INCLUDE)}"\Common\Cbptr.hpp"\
{$(INCLUDE)}"\Common\Commctrl.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Fixup.hpp"\
{$(INCLUDE)}"\Common\Gdata.hpp"\
{$(INCLUDE)}"\Common\Gdata.tpp"\
{$(INCLUDE)}"\Common\Gdipoint.hpp"\
{$(INCLUDE)}"\Common\Hookproc.hpp"\
{$(INCLUDE)}"\Common\Pcallbck.hpp"\
{$(INCLUDE)}"\Common\Point.hpp"\
{$(INCLUDE)}"\Common\Pvector.hpp"\
{$(INCLUDE)}"\Common\Pvector.tpp"\
{$(INCLUDE)}"\Common\Rect.hpp"\
{$(INCLUDE)}"\Common\Rgbcolor.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Types.hpp"\
{$(INCLUDE)}"\Common\Vhandler.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
{$(INCLUDE)}"\Common\Windowsx.hpp"\
"$(INTDIR)\Stdtmpl.obj" : $(SOURCE) $(DEP_CPP_STDTM) "$(INTDIR)"
!ELSEIF "$(CFG)" == "imagelst - Win32 Debug"
DEP_CPP_STDTM=\
{$(INCLUDE)}"\.\Treeview.hpp"\
{$(INCLUDE)}"\.\Tvitem.hpp"\
{$(INCLUDE)}"\Common\Block.hpp"\
{$(INCLUDE)}"\Common\Block.tpp"\
{$(INCLUDE)}"\Common\Callback.hpp"\
{$(INCLUDE)}"\Common\Callback.tpp"\
{$(INCLUDE)}"\Common\Cbdata.hpp"\
{$(INCLUDE)}"\Common\Cbptr.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Fixup.hpp"\
{$(INCLUDE)}"\Common\Gdata.hpp"\
{$(INCLUDE)}"\Common\Gdata.tpp"\
{$(INCLUDE)}"\Common\Gdipoint.hpp"\
{$(INCLUDE)}"\Common\Pcallbck.hpp"\
{$(INCLUDE)}"\Common\Point.hpp"\
{$(INCLUDE)}"\Common\Pvector.hpp"\
{$(INCLUDE)}"\Common\Pvector.tpp"\
{$(INCLUDE)}"\Common\Rect.hpp"\
{$(INCLUDE)}"\Common\Rgbcolor.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Types.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
{$(INCLUDE)}"\Common\Windowsx.hpp"\
"$(INTDIR)\Stdtmpl.obj" : $(SOURCE) $(DEP_CPP_STDTM) "$(INTDIR)"
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\Ftree.cpp
!IF "$(CFG)" == "imagelst - Win32 Release"
DEP_CPP_FTREE=\
{$(INCLUDE)}"\.\Ftree.hpp"\
{$(INCLUDE)}"\.\Imagelst.hpp"\
{$(INCLUDE)}"\.\Treeview.hpp"\
{$(INCLUDE)}"\.\Tvdisp.hpp"\
{$(INCLUDE)}"\.\Tvinsert.hpp"\
{$(INCLUDE)}"\.\Tvitem.hpp"\
{$(INCLUDE)}"\.\Tvkey.hpp"\
{$(INCLUDE)}"\.\Tvmsghdr.hpp"\
{$(INCLUDE)}"\Common\Block.hpp"\
{$(INCLUDE)}"\Common\Block.tpp"\
{$(INCLUDE)}"\Common\Callback.hpp"\
{$(INCLUDE)}"\Common\Callback.tpp"\
{$(INCLUDE)}"\Common\Cbdata.hpp"\
{$(INCLUDE)}"\Common\Cbdatahk.hpp"\
{$(INCLUDE)}"\Common\Cbptr.hpp"\
{$(INCLUDE)}"\Common\Commctrl.hpp"\
{$(INCLUDE)}"\Common\Dwindow.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Gdipoint.hpp"\
{$(INCLUDE)}"\Common\Guiwnd.hpp"\
{$(INCLUDE)}"\Common\Hookproc.hpp"\
{$(INCLUDE)}"\Common\Notify.hpp"\
{$(INCLUDE)}"\Common\Pcallbck.hpp"\
{$(INCLUDE)}"\Common\Point.hpp"\
{$(INCLUDE)}"\Common\Rect.hpp"\
{$(INCLUDE)}"\Common\Rgbcolor.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Vhandler.hpp"\
{$(INCLUDE)}"\Common\Window.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
{$(INCLUDE)}"\Common\Windowsx.hpp"\
"$(INTDIR)\Ftree.obj" : $(SOURCE) $(DEP_CPP_FTREE) "$(INTDIR)"
!ELSEIF "$(CFG)" == "imagelst - Win32 Debug"
DEP_CPP_FTREE=\
{$(INCLUDE)}"\.\Ftree.hpp"\
{$(INCLUDE)}"\.\Tvdisp.hpp"\
{$(INCLUDE)}"\.\Tvitem.hpp"\
{$(INCLUDE)}"\.\Tvkey.hpp"\
{$(INCLUDE)}"\.\Tvmsghdr.hpp"\
{$(INCLUDE)}"\Common\Block.hpp"\
{$(INCLUDE)}"\Common\Block.tpp"\
{$(INCLUDE)}"\Common\Callback.hpp"\
{$(INCLUDE)}"\Common\Callback.tpp"\
{$(INCLUDE)}"\Common\Cbdata.hpp"\
{$(INCLUDE)}"\Common\Cbptr.hpp"\
{$(INCLUDE)}"\Common\Dwindow.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Gdipoint.hpp"\
{$(INCLUDE)}"\Common\Guiwnd.hpp"\
{$(INCLUDE)}"\Common\Notify.hpp"\
{$(INCLUDE)}"\Common\Pcallbck.hpp"\
{$(INCLUDE)}"\Common\Point.hpp"\
{$(INCLUDE)}"\Common\Rect.hpp"\
{$(INCLUDE)}"\Common\Rgbcolor.hpp"\
{$(INCLUDE)}"\Common\Vhandler.hpp"\
{$(INCLUDE)}"\Common\Window.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
{$(INCLUDE)}"\Common\Windowsx.hpp"\
"$(INTDIR)\Ftree.obj" : $(SOURCE) $(DEP_CPP_FTREE) "$(INTDIR)"
!ENDIF
# End Source File
# End Target
# End Project
################################################################################

31
imagelst/IMAGELST.PLG Normal file
View File

@@ -0,0 +1,31 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: imagelst - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\WINNT\Profiles\sean\LOCALS~1\Temp\RSP2.tmp" with contents
[
/nologo /MTd /GX /ZI /Od /I "\work" /I "\parts" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /Fp".\msvcobj/imagelst.pch" /YX /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c
"D:\work\imagelst\Ftree.cpp"
"D:\work\imagelst\Imagelst.cpp"
"D:\work\imagelst\Treeview.cpp"
]
Creating command line "cl.exe @C:\WINNT\Profiles\sean\LOCALS~1\Temp\RSP2.tmp"
Creating command line "link.exe -lib /nologo /out:"..\exe\imagelst.lib" .\msvcobj\Ftree.obj .\msvcobj\Imagelst.obj .\msvcobj\Stdtmpl.obj .\msvcobj\Treeview.obj "
<h3>Output Window</h3>
Compiling...
Ftree.cpp
Imagelst.cpp
Treeview.cpp
Creating library...
<h3>Results</h3>
imagelst.lib - 0 error(s), 0 warning(s)
</pre>
</body>
</html>

BIN
imagelst/IMAGETST.APS Normal file

Binary file not shown.

BIN
imagelst/IMAGETST.DSW Normal file

Binary file not shown.

BIN
imagelst/IMAGETST.IDE Normal file

Binary file not shown.

1244
imagelst/IMAGETST.MAK Normal file

File diff suppressed because it is too large Load Diff

BIN
imagelst/IMAGETST.MDP Normal file

Binary file not shown.

14
imagelst/IMAGETST.RC Normal file
View File

@@ -0,0 +1,14 @@
LIST BITMAP "STRIP.BMP"
CHIP3 BITMAP "CHIP.BMP"
CHIP ICON "CHIP.ICO"
HDD ICON "HDD.ICO"
FDD ICON "FDD.ICO"
MMEDIA ICON "MMEDIA.ICO"
CD ICON "CD.ICO"
BOLT ICON "BOLT.ICO"
SYSTEM ICON "SYSTEM.ICO"
DRILL ICON "DRILL.ICO"
DEVICE ICON "DEVICE.ICO"
CDROM ICON "CDROM.ICO"
CA ICON "CA.ICO"

145
imagelst/IMGEINFO.HPP Normal file
View File

@@ -0,0 +1,145 @@
#ifndef _IMAGELIST_IMAGEINFO_HPP_
#define _IMAGELIST_IMAGEINFO_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_COMMCTRL_HPP_
#include <common/commctrl.hpp>
#endif
#ifndef _COMMON_RECTANGLE_HPP_
#include <common/rect.hpp>
#endif
class ImageInfo : private _IMAGEINFO
{
public:
ImageInfo(void);
ImageInfo(const ImageInfo &someImageInfo);
~ImageInfo();
ImageInfo &operator=(const ImageInfo &someImageInfo);
WORD operator==(const ImageInfo &someImageInfo)const;
operator _IMAGEINFO&(void);
HBITMAP colorBitmap(void)const;
HBITMAP maskBitmap(void)const;
DWORD planes(void)const;
DWORD bitsPerPixel(void)const;
Rect boundingRect(void)const;
private:
void colorBitmap(HBITMAP hbmColorBitmap);
void maskBitmap(HBITMAP hbmMaskBitmap);
void planes(DWORD planes);
void bitsPerPixel(DWORD bitsPerPixel);
void boundingRect(const Rect &boundingRect);
};
inline
ImageInfo::ImageInfo(void)
{
colorBitmap(0);
maskBitmap(0);
planes(0);
bitsPerPixel(0);
boundingRect(Rect());
}
inline
ImageInfo::ImageInfo(const ImageInfo &someImageInfo)
{
*this=someImageInfo;
}
inline
ImageInfo::~ImageInfo()
{
}
inline
ImageInfo &ImageInfo::operator=(const ImageInfo &someImageInfo)
{
colorBitmap(someImageInfo.colorBitmap());
maskBitmap(someImageInfo.maskBitmap());
planes(someImageInfo.planes());
bitsPerPixel(someImageInfo.bitsPerPixel());
boundingRect(someImageInfo.boundingRect());
return *this;
}
inline
WORD ImageInfo::operator==(const ImageInfo &someImageInfo)const
{
return (colorBitmap()==someImageInfo.colorBitmap()&&
maskBitmap()==someImageInfo.maskBitmap()&&
planes()==someImageInfo.planes()&&
bitsPerPixel()==someImageInfo.bitsPerPixel()&&
boundingRect()==someImageInfo.boundingRect());
}
inline
ImageInfo::operator _IMAGEINFO&(void)
{
return *this;
}
inline
HBITMAP ImageInfo::colorBitmap(void)const
{
return _IMAGEINFO::hbmImage;
}
inline
void ImageInfo::colorBitmap(HBITMAP hbmColorBitmap)
{
_IMAGEINFO::hbmImage=hbmColorBitmap;
}
inline
HBITMAP ImageInfo::maskBitmap(void)const
{
return _IMAGEINFO::hbmMask;
}
inline
void ImageInfo::maskBitmap(HBITMAP hbmMaskBitmap)
{
_IMAGEINFO::hbmMask=hbmMaskBitmap;
}
inline
DWORD ImageInfo::planes(void)const
{
return _IMAGEINFO::Unused1;
}
inline
void ImageInfo::planes(DWORD planes)
{
_IMAGEINFO::Unused1=planes;
}
inline
DWORD ImageInfo::bitsPerPixel(void)const
{
return _IMAGEINFO::Unused2;
}
inline
void ImageInfo::bitsPerPixel(DWORD bitsPerPixel)
{
_IMAGEINFO::Unused2=bitsPerPixel;
}
inline
Rect ImageInfo::boundingRect(void)const
{
return Rect(_IMAGEINFO::rcImage);
}
inline
void ImageInfo::boundingRect(const Rect &boundingRect)
{
_IMAGEINFO::rcImage.left=boundingRect.left();
_IMAGEINFO::rcImage.top=boundingRect.top();
_IMAGEINFO::rcImage.right=boundingRect.right();
_IMAGEINFO::rcImage.bottom=boundingRect.bottom();
}
#endif

BIN
imagelst/LIST.BMP Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
imagelst/LIST2.BMP Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
imagelst/LIST3.BMP Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
imagelst/LIST4.BMP Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

30
imagelst/MAIN.CPP Normal file
View File

@@ -0,0 +1,30 @@
#include <common/windows.hpp>
#include <imagelst/main.hpp>
#include <imagelst/mainwnd.hpp>
#include <imagelst/tvitem.hpp>
HINSTANCE Main::smhInstance=0;
HINSTANCE Main::smhPrevInstance=0;
int Main::smnCmdShow=0;
int PASCAL WinMain(HINSTANCE hProcessInstance,HINSTANCE hPrevInstance,LPSTR /*lpszCmdLine*/,int nCmdShow)
{
Main::processInstance(hProcessInstance);
Main::previousProcessInstance(hPrevInstance);
Main::cmdShow(nCmdShow);
if(Main::previousProcessInstance())
{
HWND hWnd=::FindWindow(MainWindow::className(),MainWindow::className());
if(!hWnd)
{
::MessageBox(::GetFocus(),(LPSTR)"Failed to maximize previous instance",(LPSTR)"Error",MB_ICONSTOP|MB_SYSTEMMODAL);
return FALSE;
}
::PostMessage(hWnd,WM_REACTIVATE,0,0L);
return FALSE;
}
MainWindow applicationWindow(Main::processInstance());
return applicationWindow.messageLoop();
}

67
imagelst/MAIN.HPP Normal file
View File

@@ -0,0 +1,67 @@
#ifndef _IMAGELIST_MAIN_HPP_
#define _IMAGELIST_MAIN_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
class Main
{
public:
static HINSTANCE processInstance(HWND hWnd);
static HINSTANCE processInstance(void);
static HINSTANCE previousProcessInstance(void);
static void processInstance(HINSTANCE processInstance);
static void previousProcessInstance(HINSTANCE previousProcessInstance);
static void cmdShow(int nCmdShow);
private:
static HINSTANCE smhInstance;
static HINSTANCE smhPrevInstance;
static int smnCmdShow;
};
inline
void Main::processInstance(HINSTANCE hProcessInstance)
{
smhInstance=hProcessInstance;
}
inline
void Main::previousProcessInstance(HINSTANCE previousProcessInstance)
{
smhPrevInstance=previousProcessInstance;
}
inline
void Main::cmdShow(int nCmdShow)
{
}
inline
HINSTANCE Main::processInstance(void)
{
return smhInstance;
}
inline
HINSTANCE Main::previousProcessInstance(void)
{
return smhPrevInstance;
}
#if defined(__FLAT__)
inline
HINSTANCE Main::processInstance(HWND hWnd)
{
return (HINSTANCE)::GetWindowLong(hWnd,GWL_HINSTANCE);
}
#else
inline
HINSTANCE Main::processInstance(HWND hWnd)
{
return (HINSTANCE)::GetWindowWord(hWnd,GWW_HINSTANCE);
}
#endif
#define WM_REACTIVATE WM_USER+1
#endif

51
imagelst/MAINWND.BAK Normal file
View File

@@ -0,0 +1,51 @@
#ifndef _IMAGELIST_MAINWINDOW_HPP_
#define _IMAGELIST_MAINWINDOW_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/window.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
#ifndef _IMAGELIST_FOLDERTREE_HPP_
#include <imagelst/ftree.hpp>
#endif
class MainWindow : public Window
{
public:
MainWindow(HINSTANCE hInstance);
~MainWindow();
static String className(void);
private:
void registerClass(void)const;
void insertHandlers(void);
void removeHandlers(void);
CallbackData::ReturnType paintHandler(CallbackData &someCallbackData);
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
CallbackData::ReturnType keyDownHandler(CallbackData &someCallbackData);
CallbackData::ReturnType sizeHandler(CallbackData &someCallbackData);
CallbackData::ReturnType timerHandler(CallbackData &someCallbackData);
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
Callback<MainWindow> mPaintHandler;
Callback<MainWindow> mDestroyHandler;
Callback<MainWindow> mCommandHandler;
Callback<MainWindow> mKeyDownHandler;
Callback<MainWindow> mSizeHandler;
Callback<MainWindow> mTimerHandler;
Callback<MainWindow> mCreateHandler;
static char szClassName[];
static char szMenuName[];
HINSTANCE mhInstance;
FolderTree *mlpFolderTree;
};
inline
String MainWindow::className(void)
{
return String(szClassName);
}
#endif

124
imagelst/MAINWND.CPP Normal file
View File

@@ -0,0 +1,124 @@
#include <stdio.h>
#include <common/purehdc.hpp>
#include <common/profile.hpp>
#include <common/commctrl.hpp>
#include <common/pointer.hpp>
#include <imagelst/mainwnd.hpp>
#include <imagelst/treeview.hpp>
char MainWindow::szClassName[]="Proto";
char MainWindow::szMenuName[]="";
MainWindow::MainWindow(HINSTANCE hInstance)
: mPaintHandler(this,&MainWindow::paintHandler),
mDestroyHandler(this,&MainWindow::destroyHandler),
mCommandHandler(this,&MainWindow::commandHandler),
mKeyDownHandler(this,&MainWindow::keyDownHandler),
mSizeHandler(this,&MainWindow::sizeHandler),
mCreateHandler(this,&MainWindow::createHandler),
mTimerHandler(this,&MainWindow::timerHandler),
mhInstance(hInstance), mlpFolderTree(0)
{
insertHandlers();
registerClass();
::CreateWindow(szClassName,szClassName,
WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_DLGFRAME|WS_SIZEBOX|WS_CLIPCHILDREN,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,mhInstance,(LPSTR)this);
show(SW_SHOW);
update();
}
MainWindow::~MainWindow()
{
if(mlpFolderTree){delete mlpFolderTree;mlpFolderTree=0;}
destroy();
}
void MainWindow::insertHandlers(void)
{
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
insertHandler(VectorHandler::PaintHandler,&mPaintHandler);
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
insertHandler(VectorHandler::TimerHandler,&mTimerHandler);
}
void MainWindow::removeHandlers(void)
{
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
removeHandler(VectorHandler::PaintHandler,&mPaintHandler);
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
removeHandler(VectorHandler::TimerHandler,&mTimerHandler);
}
void MainWindow::registerClass(void)const
{
WNDCLASS wndClass;
if(::GetClassInfo(mhInstance,className(),(WNDCLASS FAR*)&wndClass))return;
wndClass.style =CS_HREDRAW|CS_VREDRAW;
wndClass.lpfnWndProc =(WNDPROC)Window::WndProc;
wndClass.cbClsExtra =0;
wndClass.cbWndExtra =sizeof(MainWindow*);
wndClass.hInstance =mhInstance;
wndClass.hIcon =::LoadIcon(NULL,IDI_APPLICATION);
wndClass.hCursor =::LoadCursor(NULL,IDC_ARROW);
wndClass.hbrBackground =(HBRUSH)(COLOR_WINDOW+1);
wndClass.lpszMenuName =szMenuName;
wndClass.lpszClassName =szClassName;
::RegisterClass(&wndClass);
assert(0!=::GetClassInfo(mhInstance,className(),(WNDCLASS FAR*)&wndClass));
}
CallbackData::ReturnType MainWindow::destroyHandler(CallbackData &/*someCallbackData*/)
{
removeHandlers();
::PostQuitMessage(0);
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainWindow::sizeHandler(CallbackData &/*someCallbackData*/)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainWindow::commandHandler(CallbackData &/*someCallbackData*/)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainWindow::keyDownHandler(CallbackData &/*someCallbackData*/)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainWindow::paintHandler(CallbackData &/*someCallbackData*/)
{
return (CallbackData::ReturnType)FALSE;
}
#define makeItemID(nodeType,itemID) MAKELPARAM(itemID,nodeType)
CallbackData::ReturnType MainWindow::timerHandler(CallbackData &/*someCallbackData*/)
{
enum {RootID=0x0000};
enum NodeType{NullNode=0x0000,ImportTerminalNode=0x0001,ExportTerminalNode=0x0002,
CodeTerminalNode=0x0003,DataTerminalNode=0x0004};
killTimer(0);
mlpFolderTree=new FolderTree(*this);
mlpFolderTree->addRootNode(FolderTree::FolderClosed,"Image Sections",makeItemID(NullNode,RootID));
TreeViewItem firstItem(0,0,0,0,"foo",3,FolderTree::FolderClosed,FolderTree::FolderOpen,0,makeItemID(ImportTerminalNode,1));
mlpFolderTree->addNode(TreeView::NodeChild,firstItem,"Image Sections");
mlpFolderTree->appendNode(TreeView::NodeSibling,0,"section(foo)",0);
mlpFolderTree->appendNode(TreeView::NodeSibling,0,"section(bar)",0);
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType MainWindow::createHandler(CallbackData &/*someCallbackData*/)
{
setTimer(0,250);
return (CallbackData::ReturnType)FALSE;
}

51
imagelst/MAINWND.HPP Normal file
View File

@@ -0,0 +1,51 @@
#ifndef _IMAGELIST_MAINWINDOW_HPP_
#define _IMAGELIST_MAINWINDOW_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/window.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
#ifndef _IMAGELIST_FOLDERTREE_HPP_
#include <imagelst/ftree.hpp>
#endif
class MainWindow : public Window
{
public:
MainWindow(HINSTANCE hInstance);
~MainWindow();
static String className(void);
private:
void registerClass(void)const;
void insertHandlers(void);
void removeHandlers(void);
CallbackData::ReturnType paintHandler(CallbackData &someCallbackData);
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
CallbackData::ReturnType keyDownHandler(CallbackData &someCallbackData);
CallbackData::ReturnType sizeHandler(CallbackData &someCallbackData);
CallbackData::ReturnType timerHandler(CallbackData &someCallbackData);
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
Callback<MainWindow> mPaintHandler;
Callback<MainWindow> mDestroyHandler;
Callback<MainWindow> mCommandHandler;
Callback<MainWindow> mKeyDownHandler;
Callback<MainWindow> mSizeHandler;
Callback<MainWindow> mTimerHandler;
Callback<MainWindow> mCreateHandler;
static char szClassName[];
static char szMenuName[];
HINSTANCE mhInstance;
FolderTree *mlpFolderTree;
};
inline
String MainWindow::className(void)
{
return String(szClassName);
}
#endif

BIN
imagelst/MMEDIA.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
imagelst/NCB Normal file

Binary file not shown.

132
imagelst/NOTIFY.HPP Normal file
View File

@@ -0,0 +1,132 @@
#ifndef _IMAGELIST_NOTIFYMESSAGEHEADER_HPP_
#define _IMAGELIST_NOTIFYMESSAGEHEADER_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_COMMCTRL_HPP_
#include <common/commctrl.hpp>
#endif
class NotifyMessageHeader : private NMHDR
{
public:
NotifyMessageHeader(void);
NotifyMessageHeader(const NotifyMessageHeader &someNotifyMessageHeader);
NotifyMessageHeader(const NMHDR &someNMHDR);
virtual ~NotifyMessageHeader();
NotifyMessageHeader &operator=(const NotifyMessageHeader &someNotifyMessageHeader);
NotifyMessageHeader &operator=(const NMHDR &someNMHDR);
WORD operator==(const NotifyMessageHeader &someNotifyMessageHeader)const;
WORD operator==(const NMHDR &someNMHDR)const;
operator NMHDR&(void);
HWND hwndFrom(void)const;
void hwndFrom(HWND hwndFrom);
UINT idFrom(void)const;
void idFrom(UINT idFrom);
UINT code(void)const;
void code(UINT code);
private:
};
inline
NotifyMessageHeader::NotifyMessageHeader(void)
{
hwndFrom(0);
idFrom(0);
code(0);
}
inline
NotifyMessageHeader::NotifyMessageHeader(const NotifyMessageHeader &someNotifyMessageHeader)
{
*this=someNotifyMessageHeader;
}
inline
NotifyMessageHeader::NotifyMessageHeader(const NMHDR &someNMHDR)
{
*this=someNMHDR;
}
inline
NotifyMessageHeader::~NotifyMessageHeader()
{
}
inline
NotifyMessageHeader &NotifyMessageHeader::operator=(const NotifyMessageHeader &someNotifyMessageHeader)
{
hwndFrom(someNotifyMessageHeader.hwndFrom());
idFrom(someNotifyMessageHeader.idFrom());
code(someNotifyMessageHeader.code());
return *this;
}
inline
NotifyMessageHeader &NotifyMessageHeader::operator=(const NMHDR &someNMHDR)
{
hwndFrom(someNMHDR.hwndFrom);
idFrom(someNMHDR.idFrom);
code(someNMHDR.code);
return *this;
}
inline
WORD NotifyMessageHeader::operator==(const NotifyMessageHeader &someNotifyMessageHeader)const
{
return (hwndFrom()==someNotifyMessageHeader.hwndFrom()&&
idFrom()==someNotifyMessageHeader.idFrom()&&
code()==someNotifyMessageHeader.code());
}
inline
WORD NotifyMessageHeader::operator==(const NMHDR &someNMHDR)const
{
return (hwndFrom()==someNMHDR.hwndFrom&&
idFrom()==someNMHDR.idFrom&&
code()==someNMHDR.code);
}
inline
NotifyMessageHeader::operator NMHDR&(void)
{
return *this;
}
inline
HWND NotifyMessageHeader::hwndFrom(void)const
{
return NMHDR::hwndFrom;
}
inline
void NotifyMessageHeader::hwndFrom(HWND hwndFrom)
{
NMHDR::hwndFrom=hwndFrom;
}
inline
UINT NotifyMessageHeader::idFrom(void)const
{
return NMHDR::idFrom;
}
inline
void NotifyMessageHeader::idFrom(UINT idFrom)
{
NMHDR::idFrom=idFrom;
}
inline
UINT NotifyMessageHeader::code(void)const
{
return NMHDR::code;
}
inline
void NotifyMessageHeader::code(UINT code)
{
NMHDR::code=code;
}
#endif

47
imagelst/RELATION.HPP Normal file
View File

@@ -0,0 +1,47 @@
#ifndef _IMAGELST_RELATION_HPP_
#define _IMAGELST_RELATION_HPP_
#ifdef _EXPAND_RELATION_TEMPLATES_
#pragma option -Jgd
#endif
template <class T>
class RContainer
{
friend class Relation<T>;
public:
T *item(void);
void item(T *lpItem);
RContainer<T> *sibling(void);
void sibling(RContainer<T> *lpSibling);
RContainer<T> *parent(void);
void parent(RContainer<T> *lpParent);
RContainer<T> *child(void);
void child(RContainer<T> *lpChild);
private:
RContainer *mlpSibling;
RContainer *mlpParent;
RContainer *mlpChild;
T *mlpItem;
RContainer(void);
~RContainer();
};
template <class T>
class Relation
{
public:
Relation(void);
Relation(const Relation<T> &someRelation);
virtual ~Relation(void);
void insert(const T &someItem,const T &insertAfter);
void remove(const T &someItem);
WORD find(T &someItem);
Relation<T> &operator=(const Relation<T> &someRelation);
WORD operator==(const Relation<T> &someRelation)const;
private:
RContainer<T> *Relation<T>::searchChildDescend(RContainer<T> *lpRContainer,T &someItem);
RContainer<T> *Relation<T>::searchSiblingDescend(RContainer<T> *lpRContainer,T &someItem);
RContainer<T> *mlpRContainer;
};
#endif

156
imagelst/RELATION.TPP Normal file
View File

@@ -0,0 +1,156 @@
#ifndef _IMAGELST_RELATION_HPP_
#error relation.hpp must precede relation.tpp
#endif
template <class T>
Relation<T>::Relation(void)
: mlpRContainer(0)
{
}
template <class T>
Relation<T>::Relation(const Relation<T> &someRelation)
{
}
template <class T>
Relation<T>::~Relation()
{
if(mlpRContainer){delete mlpRContainer;mlpRContainer=0;}
}
template <class T>
void Relation<T>::insert(const T &someItem,const T &insertAfter)
{
}
template <class T>
void Relation<T>::remove(const T &someItem)
{
}
template <class T>
WORD Relation<T>::find(T &someItem)
{
if(!mlpRContainer)return FALSE;
RContainer<T> *lpParentNode(mlpRContainer);
while(lpParentNode)
{
if(searchChildDescend(lpParentNode,someItem))return TRUE;
lpParentNode=lpParentNode->sibling();
}
return FALSE;
}
template <class T>
Relation<T> &Relation<T>::operator=(const Relation<T> &someRelation)
{
}
template <class T>
WORD Relation<T>::operator==(const Relation<T> &someRelation)const
{
}
template <class T>
RContainer<T> *Relation<T>::searchChildDescend(RContainer<T> *lpRContainer,T &someItem)
{
RContainer<T> *lpParentNode(lpRContainer);
RContainer<T> *lpSiblingNode(0);
while(lpRContainer)
{
if(someItem==*(lpRContainer->item())){someItem=*lpRContainer->item();return lpRContainer;}
lpRContainer=lpRContainer->child();
if(lpRContainer->sibling())
{
lpSiblingNode=searchSiblingDescend(lpRContainer->sibling(),someItem);
if(lpSiblingNode)return lpSiblingNode;
}
}
return lpSiblingNode;
}
template <class T>
RContainer<T> *Relation<T>::searchSiblingDescend(RContainer<T> *lpRContainer,T &someItem)
{
RContainer<T> *lpParentNode(lpRContainer);
RContainer<T> *lpChildNode(0);
while(lpRContainer)
{
if(someItem==*(lpRContainer->item())){someItem=*(lpRContainer->item());return lpRContainer;}
lpRContainer=lpRContainer->sibling();
if(lpRContainer->child())
{
lpChildNode=searchChildDescend(lpRContainer->child(),someItem);
if(lpChildNode)return lpChildNode;
}
}
return lpChildNode;
}
// Container methods
template <class T>
RContainer<T>::RContainer(void)
: mlpSibling(0), mlpParent(0), mlpChild(0), mlpItem(0)
{
}
template <class T>
RContainer<T>::~RContainer()
{
if(mlpItem){delete mlpItem;mlpItem=0;}
}
template <class T>
RContainer<T> *RContainer<T>::sibling(void)
{
return mlpSibling;
}
template <class T>
void RContainer<T>::sibling(RContainer<T> *lpSibling)
{
mlpSibling=lpSibling;
}
template <class T>
RContainer<T> *RContainer<T>::parent(void)
{
return mlpParent;
}
template <class T>
void RContainer<T>::parent(RContainer<T> *lpParent)
{
mlpParent=lpParent;
}
template <class T>
RContainer<T> *RContainer<T>::child(void)
{
return mlpChild;
}
template <class T>
void RContainer<T>::child(RContainer<T> *lpChild)
{
mlpChild=lpChild;
}
template <class T>
T *RContainer<T>::item(void)
{
return mlpItem;
}
template <class T>
void RContainer<T>::item(T *lpItem)
{
mlpItem=lpItem;
}

499
imagelst/SCRAPS.TXT Normal file
View File

@@ -0,0 +1,499 @@
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);
}

14
imagelst/STATE.TXT Normal file
View File

@@ -0,0 +1,14 @@
Table 3. Tree View Item States
Item State Meaning
TVIS_CUT The item is marked.
TVIS_DISABLED The item is disabled and is drawn using the standard disabled style and color.
TVIS_DROPHILITED The item is highlighted as a drag-and-drop target.
TVIS_EXPANDED The item's list of child items is currently expanded.
TVIS_EXPANDEDONCE The item's list of child items has been expanded at least once.
TVIS_FOCUSED The item has the focus and is drawn with the standard focus rectangle.
TVIS_OVERLAYMASK An overlay image is used as a mask with the item image.
TVIS_SELECTED The item is selected.
TVIS_USERMASK A user-defined mask is set. If you set the image to be a state image list, this mask will specify the indexes into the state image list and draw another image next to the normal item image. For example, you can use this state to put a check mark next to a tree view item image.
At any given time, the parent it

25
imagelst/STDTMPL.BAK Normal file
View File

@@ -0,0 +1,25 @@
#ifndef _MSC_VER
#define _EXPAND_VECTOR_TEMPLATES_
#define _EXPAND_BLOCK_TEMPLATES_
#define _EXPAND_RELATION_TEMPLATES_
#include <common/point.hpp>
#include <common/rgbcolor.hpp>
#include <common/pvector.hpp>
#include <common/pvector.tpp>
#include <common/callback.hpp>
#include <common/callback.tpp>
#include <common/block.hpp>
#include <common/block.tpp>
#include <common/gdata.hpp>
#include <common/gdata.tpp>
#include <common/string.hpp>
#include <imagelst/treeview.hpp>
#include <imagelst/tvitem.hpp>
typedef PureVector<Point> a;
typedef PureVector<RGBColor> b;
typedef Block<String> c;
typedef GlobalData<BYTE> e;
typedef Block<CallbackPointer> f;
typedef Callback<TreeView> h;
#endif

25
imagelst/STDTMPL.CPP Normal file
View File

@@ -0,0 +1,25 @@
#ifndef _MSC_VER
#define _EXPAND_VECTOR_TEMPLATES_
#define _EXPAND_BLOCK_TEMPLATES_
#define _EXPAND_RELATION_TEMPLATES_
#include <common/point.hpp>
#include <common/rgbcolor.hpp>
#include <common/pvector.hpp>
#include <common/pvector.tpp>
#include <common/callback.hpp>
#include <common/callback.tpp>
#include <common/block.hpp>
#include <common/block.tpp>
#include <common/gdata.hpp>
#include <common/gdata.tpp>
#include <common/string.hpp>
#include <imagelst/treeview.hpp>
#include <imagelst/tvitem.hpp>
typedef PureVector<Point> a;
typedef PureVector<RGBColor> b;
typedef Block<String> c;
typedef GlobalData<BYTE> e;
typedef Block<CallbackPointer> f;
typedef Callback<TreeView> h;
#endif

BIN
imagelst/STRIP.BMP Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
imagelst/SYSTEM.ICO Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
imagelst/TDCONFIG.TDW Normal file

Binary file not shown.

BIN
imagelst/TDW.TRW Normal file

Binary file not shown.

12
imagelst/TREEITEM.HPP Normal file
View File

@@ -0,0 +1,12 @@
#ifndef _IMAGELIST_HANDLETREE_HPP_
#define _IMAGELIST_HANDLETREE_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_COMMCTRL_HPP_
#include <common/commctrl.hpp>
#endif
typedef HTREEITEM HandleTreeItem;
#endif

453
imagelst/TREEVIEW.BAK Normal file
View File

@@ -0,0 +1,453 @@
#ifndef _IMAGELIST_TREEVIEW_HPP_
#define _IMAGELIST_TREEVIEW_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_COMMCTRL_HPP_
#include <common/commctrl.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
#ifndef _COMMON_RECTANGLE_HPP_
#include <common/rect.hpp>
#endif
#ifndef _COMMON_CALLBACK_HPP_
#include <common/callback.hpp>
#endif
#ifndef _IMAGELIST_IMAGELIST_HPP_
#include <imagelst/imagelst.hpp>
#endif
#ifndef _IMAGELIST_TREEVIEWINSERT_HPP_
#include <imagelst/tvinsert.hpp>
#endif
#ifndef _IMAGELIST_TREEVIEWITEM_HPP_
#include <imagelst/tvitem.hpp>
#endif
#ifndef _COMMON_HOOKPROC_HPP_
#include <common/hookproc.hpp>
#endif
class TreeViewMessageHeader;
class TreeViewDisplayInfo;
class GUIWindow;
class HitTestInfo;
class TreeView : public WinHookProc
{
public:
enum{ControlID=101};
enum TreeFlags{TreeHasButtons=TVS_HASBUTTONS,TreeHasLines=TVS_HASLINES,
TreeLinesAtRoot=TVS_LINESATROOT,TreeEditLabels=TVS_EDITLABELS,
TreeDisableDragDrop=TVS_DISABLEDRAGDROP,TreeShowSelAlways=TVS_SHOWSELALWAYS};
enum TreeExpand{Collapse=TVE_COLLAPSE,CollapseReset=TVE_COLLAPSERESET,
Expand=TVE_EXPAND,Toggle=TVE_TOGGLE};
enum NodeType{NodeChild=0,NodeSibling=1};
enum ListType{Normal=TVSIL_NORMAL,State=TVSIL_STATE};
TreeView(GUIWindow &parentWindow,DWORD viewFlags=TreeHasLines,const Rect &winRect=Rect(1,1,320,200),int controlID=ControlID);
virtual ~TreeView();
HIMAGELIST setImageList(ImageList &someImageList,WORD itemIndex=0);
HIMAGELIST createDragImage(HTREEITEM hTreeItem);
HTREEITEM addRootNode(DWORD indexImage,const String &textString,DWORD userData);
HWND getControlWnd(void)const;
HWND getEditControl(void)const;
String currentSelection(void)const;
String currentParentSelection(void)const;
String getRootItemText(void)const;
UINT getCount(void)const;
int controlID(void)const;
HTREEITEM getChild(HTREEITEM hTreeItem)const;
HTREEITEM getNextSibling(HTREEITEM hTreeItem)const;
HTREEITEM getParent(HTREEITEM hTreeItem)const;
HTREEITEM hitTest(HitTestInfo &someHitTestInfo)const;
HTREEITEM selectItem(HTREEITEM hTreeItem)const;
HTREEITEM selectDropTarget(HTREEITEM hTreeItem)const;
HTREEITEM insertItem(TreeViewInsert &someTreeViewInsert);
HIMAGELIST getImageList(ListType listType=Normal);
const TreeViewInsert &lastInsert(void)const;
WORD addNode(NodeType nodeType,TreeViewItem &insertTreeViewItem,const String &parentString,WORD selected=FALSE,BYTE delimeter=0);
WORD appendNode(NodeType nodeType,DWORD itemIndex,const String &text,DWORD userData,WORD selected=FALSE);
WORD moveTree(int left,int top,int right,int bottom,WORD repaint=TRUE)const;
WORD getItemRect(Rect &itemRect,BOOL boundingText=TRUE)const;
WORD getItemRect(Rect &itemRect,HTREEITEM hTreeItem,BOOL boundingText=TRUE)const;
WORD getItem(TreeViewItem &someTreeViewItem)const;
WORD setItem(const TreeViewItem &someTreeViewItem)const;
WORD remove(HTREEITEM hTreeItem)const;
WORD remove(const String &nodeName)const;
WORD setRedraw(WORD redrawFlag)const;
WORD setFocus(void)const;
WORD remove(void)const;
BOOL update(void)const;
BOOL invalidate(void)const;
WORD isOkay(void)const;
protected:
HTREEITEM getRoot(void)const;
virtual WORD tvnSelChanging(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnSelChanged(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnGetDispInfo(TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnSetDispInfo(TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnItemExpanding(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnItemExpanded(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnBeginDrag(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnBeginRDrag(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnDeleteItem(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnBeginLabelEdit(const TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnEndLabelEdit(const TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnKeyDown(const TreeViewMessageHeader &treeViewMessageHeader);
private:
CallbackData::ReturnType notifyHandler(CallbackData &someCallbackData);
CallbackData::ReturnType rightButtonUpHandler(CallbackData &someCallbackData);
CallbackData::ReturnType rightButtonDownHandler(CallbackData &someCallbackData);
WORD handleGetDisplayInfo(CallbackData &someCallackData);
void createTreeView(const Rect &winRect,DWORD viewFlags,int controlID);
HTREEITEM selectSetFirstVisible(HTREEITEM hTreeItem);
HTREEITEM getDropHilight(void);
HTREEITEM getSelection(void)const;
HTREEITEM searchItem(const String &searchString,HTREEITEM hDescendItem=(HTREEITEM)0)const;
HTREEITEM getFirstVisible(void);
HTREEITEM select(HTREEITEM hTreeItem,WPARAM code)const;
HTREEITEM getNextItem(HTREEITEM hTreeItem,WPARAM code)const;
HTREEITEM getPrevSibling(HTREEITEM hTreeItem);
HTREEITEM getNextVisible(HTREEITEM hTreeItem);
HTREEITEM getPrevVisible(HTREEITEM hTreeItem);
WORD sortChildren(HTREEITEM hTreeItem,WPARAM recurse);
WORD expand(HTREEITEM hTreeItem,WPARAM code);
WORD getISearchString(String &searchString);
WORD searchInsert(NodeType nodeType,TreeViewItem &viewItem,TreeViewInsert &viewInsert,const String &parentString,HTREEITEM hParentItem,HTREEITEM hChildItem,BYTE delimeter=0);
WORD ensureVisible(HTREEITEM hTreeItem);
WORD endEditLabelNow(WPARAM cancel);
WORD setIndent(WORD indent);
HWND getEditLabel(HTREEITEM hTreeItem);
UINT getVisibleCount(void);
UINT getIndent(void);
UINT indent(void);
void indent(UINT indent);
Callback<TreeView> mNotifyHandler;
GUIWindow &mParentWindow;
HWND mhTreeViewWnd;
int mControlID;
TreeViewInsert mLastInsert;
};
inline
UINT TreeView::indent(void)
{
if(!isOkay())return FALSE;
return (UINT)::SendMessage(mhTreeViewWnd,TVM_GETINDENT,0,0L);
}
inline
void TreeView::indent(UINT indent)
{
if(!isOkay())return;
::SendMessage(mhTreeViewWnd,TVM_SETINDENT,(WPARAM)indent,0L);
}
inline
HTREEITEM TreeView::insertItem(TreeViewInsert &someTreeViewInsert)
{
HTREEITEM hTreeItem;
if(!isOkay())return FALSE;
hTreeItem=(HTREEITEM)::SendMessage(mhTreeViewWnd,TVM_INSERTITEM,0,(LPARAM)&((TV_INSERTSTRUCT&)someTreeViewInsert));
if(hTreeItem){mLastInsert=someTreeViewInsert;mLastInsert.insertAfter(hTreeItem);}
return hTreeItem;
}
inline
WORD TreeView::remove(HTREEITEM hTreeItem)const
{
if(!isOkay())return FALSE;
return ::SendMessage(mhTreeViewWnd,TVM_DELETEITEM,0,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
WORD TreeView::expand(HTREEITEM hTreeItem,WPARAM code)
{
if(!isOkay())return FALSE;
return ::SendMessage(mhTreeViewWnd,TVM_EXPAND,(WPARAM)code,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
UINT TreeView::getCount(void)const
{
if(!isOkay())return FALSE;
return (UINT)::SendMessage(mhTreeViewWnd,TVM_GETCOUNT,0,0L);
}
inline
UINT TreeView::getIndent(void)
{
if(!isOkay())return FALSE;
return (UINT)::SendMessage(mhTreeViewWnd,TVM_GETINDENT,0,0L);
}
inline
WORD TreeView::setIndent(WORD indent)
{
if(!isOkay())return FALSE;
return (WORD)::SendMessage(mhTreeViewWnd,TVM_SETINDENT,(WPARAM)indent,0L);
}
inline
HIMAGELIST TreeView::getImageList(ListType listType)
{
if(!isOkay())return FALSE;
return (HIMAGELIST)::SendMessage(mhTreeViewWnd,TVM_GETIMAGELIST,(WPARAM)listType,0L);
}
inline
HIMAGELIST TreeView::setImageList(ImageList &someImageList,WORD indexImage)
{
if(!isOkay()||!someImageList.isOkay())return FALSE;
return (HIMAGELIST)::SendMessage(mhTreeViewWnd,TVM_SETIMAGELIST,indexImage,(LPARAM)(HIMAGELIST)someImageList);
}
inline
HTREEITEM TreeView::getNextItem(HTREEITEM hTreeItem,WPARAM code)const
{
if(!isOkay())return FALSE;
return (HTREEITEM)::SendMessage(mhTreeViewWnd,TVM_GETNEXTITEM,(WPARAM)code,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
HTREEITEM TreeView::getChild(HTREEITEM hTreeItem)const
{
return getNextItem(hTreeItem,TVGN_CHILD);
}
inline
HTREEITEM TreeView::getNextSibling(HTREEITEM hTreeItem)const
{
return getNextItem(hTreeItem,TVGN_NEXT);
}
inline
HTREEITEM TreeView::getPrevSibling(HTREEITEM hTreeItem)
{
return getNextItem(hTreeItem,TVGN_PREVIOUS);
}
inline
HTREEITEM TreeView::getParent(HTREEITEM hTreeItem)const
{
return getNextItem(hTreeItem,TVGN_PARENT);
}
inline
HTREEITEM TreeView::getFirstVisible(void)
{
return getNextItem(0,TVGN_FIRSTVISIBLE);
}
inline
HTREEITEM TreeView::getNextVisible(HTREEITEM hTreeItem)
{
return getNextItem(hTreeItem,TVGN_NEXTVISIBLE);
}
inline
HTREEITEM TreeView::getPrevVisible(HTREEITEM hTreeItem)
{
return getNextItem(hTreeItem,TVGN_PREVIOUSVISIBLE);
}
inline
HTREEITEM TreeView::getSelection(void)const
{
return getNextItem(0,TVGN_CARET);
}
inline
HTREEITEM TreeView::getDropHilight(void)
{
return getNextItem(0,TVGN_DROPHILITE);
}
inline
HTREEITEM TreeView::getRoot(void)const
{
return getNextItem(0,TVGN_ROOT);
}
inline
HTREEITEM TreeView::select(HTREEITEM hTreeItem,WPARAM code)const
{
if(!isOkay())return FALSE;
return (HTREEITEM)::SendMessage(mhTreeViewWnd,TVM_SELECTITEM,(WPARAM)code,(LPARAM)(HTREEITEM)(hTreeItem));
}
inline
HTREEITEM TreeView::selectItem(HTREEITEM hTreeItem)const
{
return select(hTreeItem,TVGN_CARET);
}
inline
HTREEITEM TreeView::selectDropTarget(HTREEITEM hTreeItem)const
{
return select(hTreeItem,TVGN_DROPHILITE);
}
inline
HTREEITEM TreeView::selectSetFirstVisible(HTREEITEM hTreeItem)
{
return select(hTreeItem,TVGN_FIRSTVISIBLE);
}
inline
WORD TreeView::getItem(TreeViewItem &someTreeViewItem)const
{
if(!isOkay())return FALSE;
return (WORD)::SendMessage(mhTreeViewWnd,TVM_GETITEM,0,(LPARAM)&((TV_ITEM&)someTreeViewItem));
}
inline
WORD TreeView::setItem(const TreeViewItem &someTreeViewItem)const
{
if(!isOkay())return FALSE;
return (WORD)::SendMessage(mhTreeViewWnd,TVM_SETITEM,0,(LPARAM)&((TV_ITEM&)(TreeViewItem&)someTreeViewItem));
}
inline
HWND TreeView::getEditLabel(HTREEITEM hTreeItem)
{
if(!isOkay())return FALSE;
return (HWND)::SendMessage(mhTreeViewWnd,TVM_EDITLABEL,0,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
HWND TreeView::getEditControl(void)const
{
if(!isOkay())return FALSE;
return (HWND)::SendMessage(mhTreeViewWnd,TVM_GETEDITCONTROL,0,0L);
}
inline
UINT TreeView::getVisibleCount(void)
{
if(!isOkay())return FALSE;
return (UINT)::SendMessage(mhTreeViewWnd,TVM_GETVISIBLECOUNT,0,0L);
}
inline
HIMAGELIST TreeView::createDragImage(HTREEITEM hTreeItem)
{
if(!isOkay())return FALSE;
return (HIMAGELIST)::SendMessage(mhTreeViewWnd,TVM_CREATEDRAGIMAGE,0,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
WORD TreeView::sortChildren(HTREEITEM hTreeItem,WPARAM recurse)
{
if(!isOkay())return FALSE;
return ::SendMessage(mhTreeViewWnd,TVM_SORTCHILDREN,(WPARAM)recurse,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
WORD TreeView::ensureVisible(HTREEITEM hTreeItem)
{
if(!isOkay())return FALSE;
return ::SendMessage(mhTreeViewWnd,TVM_ENSUREVISIBLE,(WPARAM)0,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
WORD TreeView::endEditLabelNow(WPARAM cancel)
{
if(!isOkay())return FALSE;
return ::SendMessage(mhTreeViewWnd,TVM_ENDEDITLABELNOW,(WPARAM)cancel,0L);
}
inline
WORD TreeView::getISearchString(String &searchString)
{
if(!isOkay())return FALSE;
return (WORD)::SendMessage(mhTreeViewWnd,TVM_GETISEARCHSTRING,0,(LPARAM)(LPSTR)searchString);
}
inline
WORD TreeView::getItemRect(Rect &itemRect,BOOL boundingText)const
{
if(!isOkay())return FALSE;
*((HTREEITEM*)&((RECT&)itemRect))=getSelection();
return (WORD)::SendMessage(mhTreeViewWnd,TVM_GETITEMRECT,boundingText,(LPARAM)&((RECT&)itemRect));
}
inline
WORD TreeView::getItemRect(Rect &itemRect,HTREEITEM hTreeItem,BOOL boundingText)const
{
if(!isOkay())return FALSE;
*((HTREEITEM*)&((RECT&)itemRect))=hTreeItem;
return (WORD)::SendMessage(mhTreeViewWnd,TVM_GETITEMRECT,boundingText,(LPARAM)&((RECT&)itemRect));
}
inline
WORD TreeView::setRedraw(WORD redrawFlag)const
{
if(!isOkay())return FALSE;
return (WORD)::SendMessage(mhTreeViewWnd,WM_SETREDRAW,redrawFlag,0L);
}
inline
BOOL TreeView::update(void)const
{
if(!isOkay())return FALSE;
return ::UpdateWindow(mhTreeViewWnd);
}
inline
BOOL TreeView::invalidate(void)const
{
if(!isOkay())return FALSE;
return ::InvalidateRect(mhTreeViewWnd,0,FALSE);
}
inline
WORD TreeView::moveTree(int left,int top,int right,int bottom,WORD repaint)const
{
if(!isOkay())return FALSE;
return ::MoveWindow(mhTreeViewWnd,left,top,right,bottom,repaint);
}
inline
WORD TreeView::setFocus(void)const
{
if(!isOkay())return FALSE;
::SetFocus(mhTreeViewWnd);
return TRUE;
}
inline
WORD TreeView::remove(const String &nodeName)const
{
if(!isOkay())return FALSE;
HTREEITEM hTreeItem(searchItem(nodeName));
if(!hTreeItem)return FALSE;
return remove(hTreeItem);
}
inline
const TreeViewInsert &TreeView::lastInsert(void)const
{
return mLastInsert;
}
inline
HWND TreeView::getControlWnd(void)const
{
return mhTreeViewWnd;
}
inline
int TreeView::controlID(void)const
{
return mControlID;
}
inline
WORD TreeView::isOkay(void)const
{
return (mhTreeViewWnd?TRUE:FALSE);
}
#endif

361
imagelst/TREEVIEW.CPP Normal file
View File

@@ -0,0 +1,361 @@
#include <imagelst/tvdisp.hpp>
#include <imagelst/tvkey.hpp>
#include <imagelst/treeview.hpp>
#include <imagelst/tvmsghdr.hpp>
#include <imagelst/hittest.hpp>
#include <common/guiwnd.hpp>
TreeView::TreeView(GUIWindow &parentWindow,const Rect &winRect,int controlID,DWORD viewFlags)
: mParentWindow(parentWindow) //, mControlID(controlID)
{
mNotifyHandler.setCallback(this,&TreeView::notifyHandler);
::InitCommonControls();
mParentWindow.insertHandler(VectorHandler::NotifyHandler,&mNotifyHandler);
createTreeView(winRect,viewFlags,controlID);
}
TreeView::~TreeView()
{
destroy();
mParentWindow.removeHandler(VectorHandler::NotifyHandler,&mNotifyHandler);
}
void TreeView::createTreeView(const Rect &winRect,DWORD viewFlags,int controlID)
{
createControl(WS_EX_LEFT|WS_EX_LTRREADING|WS_EX_RIGHTSCROLLBAR|WS_EX_CLIENTEDGE,WC_TREEVIEW,"",WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_VISIBLE|viewFlags,winRect,mParentWindow,controlID);
}
HTREEITEM TreeView::hitTest(HitTestInfo &someHitTestInfo)const
{
if(!isOkay())return FALSE;
return (HTREEITEM)sendMessage(TVM_HITTEST,0,(LPARAM)&((TV_HITTESTINFO&)someHitTestInfo));
}
WORD TreeView::remove(void)const
{
if(!isOkay())return FALSE;
if(!getCount())return TRUE;
sendMessage(TVM_DELETEITEM,0,(LPARAM)TVI_ROOT);
return !getCount();
}
CallbackData::ReturnType TreeView::rightButtonDownHandler(CallbackData &/*someCallbackData*/)
{
return (CallbackData::ReturnType)TRUE;
}
CallbackData::ReturnType TreeView::rightButtonUpHandler(CallbackData &/*someCallbackData*/)
{
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType TreeView::notifyHandler(CallbackData &someCallbackData)
{
NotifyMessageHeader nmHeader(*(((NMHDR*)someCallbackData.lParam())));
if(controlID()==nmHeader.idFrom())
{
switch(nmHeader.code())
{
case TVN_SELCHANGING :
return tvnSelChanging(TreeViewMessageHeader(*(((NM_TREEVIEW*)someCallbackData.lParam()))));
case TVN_SELCHANGED :
return tvnSelChanged(TreeViewMessageHeader(*(((NM_TREEVIEW*)someCallbackData.lParam()))));
case TVN_GETDISPINFO :
return handleGetDisplayInfo(someCallbackData);
case TVN_SETDISPINFO :
return tvnSetDispInfo(TreeViewDisplayInfo(*(((TV_DISPINFO*)someCallbackData.lParam()))));
case TVN_ITEMEXPANDING :
return tvnItemExpanding(TreeViewMessageHeader(*(((NM_TREEVIEW*)someCallbackData.lParam()))));
case TVN_ITEMEXPANDED :
return tvnItemExpanded(TreeViewMessageHeader(*(((NM_TREEVIEW*)someCallbackData.lParam()))));
case TVN_BEGINDRAG :
return tvnBeginDrag(TreeViewMessageHeader(*(((NM_TREEVIEW*)someCallbackData.lParam()))));
case TVN_BEGINRDRAG :
return tvnBeginRDrag(TreeViewMessageHeader(*(((NM_TREEVIEW*)someCallbackData.lParam()))));
case TVN_DELETEITEM :
return tvnDeleteItem(TreeViewMessageHeader(*(((NM_TREEVIEW*)someCallbackData.lParam()))));
case TVN_BEGINLABELEDIT :
return tvnBeginLabelEdit(TreeViewDisplayInfo(*(((TV_DISPINFO*)someCallbackData.lParam()))));
case TVN_ENDLABELEDIT :
return tvnEndLabelEdit(TreeViewDisplayInfo(*(((TV_DISPINFO*)someCallbackData.lParam()))));
case TVN_KEYDOWN :
return tvnKeyDown(TreeViewKeyDown(*(((TV_KEYDOWN*)someCallbackData.lParam()))));
}
}
return (CallbackData::ReturnType)::DefWindowProc(someCallbackData.hwndFrom(),WM_NOTIFY,someCallbackData.wParam(),someCallbackData.lParam());
}
HTREEITEM TreeView::addRootNode(DWORD itemIndex,const String &text,DWORD userData)
{
TreeViewItem treeViewItem;
TreeViewInsert treeViewInsert;
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);
treeViewInsert.parent(TVGN_ROOT);
treeViewInsert.insertAfter(TVGN_ROOT);
treeViewInsert.viewItem(treeViewItem);
return insertItem(treeViewInsert);
}
WORD TreeView::appendNode(NodeType nodeType,DWORD itemIndex,const String &text,DWORD userData,WORD selected)
{
HTREEITEM hInsertItem;
TreeViewItem treeViewItem;
TreeViewInsert treeViewInsert;
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);
}
WORD TreeView::addNode(NodeType nodeType,TreeViewItem &insertTreeViewItem,const String &parentString,WORD selected,BYTE delimeter)
{
HTREEITEM hTreeItem;
HTREEITEM hPrevItem;
HTREEITEM hChildItem;
String workString;
TreeViewInsert viewInsert;
TreeViewItem viewItem;
workString.length(String::MaxString);
viewItem.maxText(workString.length());
hTreeItem=getChild((HTREEITEM)TreeViewInsert::GetRoot);
while(hTreeItem)
{
hChildItem=getChild(hTreeItem);
if(hChildItem&&searchInsert(nodeType,insertTreeViewItem,viewInsert,parentString,hTreeItem,hChildItem,delimeter))
{
HTREEITEM hInsertItem(insertItem(viewInsert));
if(!hInsertItem)return FALSE;
if(selected)selectItem(hInsertItem);
return TRUE;
}
else
{
viewItem.mask(TreeViewItem::MaskText);
viewItem.item(hTreeItem);
viewItem.text((LPSTR)workString);
getItem(viewItem);
if(parentString==String(viewItem.text()).betweenString(0,delimeter))
{
String workString(insertTreeViewItem.text());
viewItem=TreeViewItem();
viewItem.mask(TreeViewItem::MaskText|TreeViewItem::MaskImage|TreeViewItem::MaskSelectedImage|TreeViewItem::MaskParam);
viewItem.text((LPSTR)workString);
viewItem.maxText(workString.length());
viewItem.image(insertTreeViewItem.image());
viewItem.selectedImage(I_IMAGECALLBACK);
viewItem.lParam(insertTreeViewItem.lParam());
viewInsert.parent(hTreeItem);
viewInsert.insertAfter(hPrevItem);
viewInsert.viewItem(viewItem);
HTREEITEM hInsertItem(insertItem(viewInsert));
if(!hInsertItem)return FALSE;
if(selected)selectItem(hInsertItem);
return TRUE;
}
}
hPrevItem=hTreeItem;
hTreeItem=getNextSibling(hTreeItem);
}
return FALSE;
}
HTREEITEM TreeView::searchItem(const String &searchString,HTREEITEM hDescendItem)const
{
TreeViewItem viewItem;
String workString;
HTREEITEM hTreeItem;
HTREEITEM hChildItem;
workString.length(String::MaxString);
viewItem.maxText(workString.length());
if(!hDescendItem)hTreeItem=getChild((HTREEITEM)TreeViewInsert::GetRoot);
else hTreeItem=hDescendItem;
while(hTreeItem)
{
hChildItem=getChild(hTreeItem);
if(hChildItem)
{
HTREEITEM hFoundItem(searchItem(searchString,hChildItem));
if(hFoundItem)return hFoundItem;
}
viewItem.mask(TreeViewItem::MaskText);
viewItem.item(hTreeItem);
viewItem.text((LPSTR)workString);
getItem(viewItem);
if(searchString==viewItem.text())return hTreeItem;
hTreeItem=getNextSibling(hTreeItem);
}
return (HTREEITEM)0;
}
WORD TreeView::searchInsert(NodeType nodeType,TreeViewItem &viewItem,TreeViewInsert &viewInsert,const String &parentString,HTREEITEM hParentItem,HTREEITEM hChildItem,BYTE delimeter)
{
WORD searchResult(FALSE);
HTREEITEM hPrevItem(FALSE);
HTREEITEM hTreeItem(hChildItem);
HTREEITEM hChildNode;
TreeViewItem searchItem;
String bufferString;
bufferString.length(String::MaxString);
searchItem.maxText(bufferString.length());
while(hTreeItem)
{
hChildNode=getChild(hTreeItem);
if(hChildNode&&searchInsert(nodeType,viewItem,viewInsert,parentString,hTreeItem,hChildNode,delimeter))
{
searchResult=TRUE;
break;
}
searchItem.mask(TreeViewItem::MaskText);
searchItem.item(hTreeItem);
searchItem.text((LPSTR)bufferString);
getItem(searchItem);
if(parentString==delimeter?String(searchItem.text()).betweenString(0,delimeter):String(searchItem.text()))
{
viewItem.mask(TreeViewItem::MaskText|TreeViewItem::MaskImage|TreeViewItem::MaskSelectedImage|TreeViewItem::MaskParam);
viewItem.selectedImage(I_IMAGECALLBACK);
if(NodeChild==nodeType)viewInsert.parent(hTreeItem);
else viewInsert.parent(hParentItem);
viewInsert.insertAfter(hPrevItem);
viewInsert.viewItem(viewItem);
searchResult=TRUE;
break;
}
hPrevItem=hTreeItem;
hTreeItem=getNextSibling(hTreeItem);
}
return searchResult;
}
String TreeView::getRootItemText(void)const
{
TreeViewItem viewItem;
String rootText;
viewItem.maxText(String::MaxString);
viewItem.mask(TreeViewItem::MaskText);
viewItem.item(getRoot());
viewItem.text((LPSTR)rootText);
getItem(viewItem);
return rootText;
}
String TreeView::currentSelection(void)const
{
TreeViewItem viewItem;
String workString;
workString.length(String::MaxString);
viewItem.mask(TreeViewItem::MaskText);
viewItem.item(getSelection());
viewItem.text(workString);
viewItem.maxText(workString.length());
getItem(viewItem);
return (const char*)viewItem.text();
}
String TreeView::currentParentSelection(void)const
{
TreeViewItem viewItem;
String workString;
workString.length(String::MaxString);
viewItem.mask(TreeViewItem::MaskText);
viewItem.item(getParent(getSelection()));
viewItem.text(workString);
viewItem.maxText(workString.length());
getItem(viewItem);
return (const char *)viewItem.text();
}
WORD TreeView::handleGetDisplayInfo(CallbackData &someCallbackData)
{
WORD returnCode;
TreeViewDisplayInfo tvDispInfo(*((TV_DISPINFO*)someCallbackData.lParam()));
returnCode=tvnGetDispInfo(tvDispInfo);
*((TV_DISPINFO*)someCallbackData.lParam())=(TV_DISPINFO&)tvDispInfo;
return returnCode;
}
// *******virtuals
WORD TreeView::tvnSelChanging(const TreeViewMessageHeader &/*treeViewMessageHeader*/)
{
return FALSE;
}
WORD TreeView::tvnSelChanged(const TreeViewMessageHeader &/*treeViewMessageHeader*/)
{
return FALSE;
}
WORD TreeView::tvnGetDispInfo(TreeViewDisplayInfo &/*treeViewDisplayInfo*/)
{
return FALSE;
}
WORD TreeView::tvnSetDispInfo(TreeViewDisplayInfo &/*treeViewDisplayInfo*/)
{
return FALSE;
}
WORD TreeView::tvnItemExpanding(const TreeViewMessageHeader &/*treeViewMessageHeader*/)
{
return FALSE;
}
WORD TreeView::tvnItemExpanded(const TreeViewMessageHeader &/*treeViewMessageHeader*/)
{
return FALSE;
}
WORD TreeView::tvnBeginDrag(const TreeViewMessageHeader &/*treeViewMessageHeader*/)
{
return FALSE;
}
WORD TreeView::tvnBeginRDrag(const TreeViewMessageHeader &/*treeViewMessageHeader*/)
{
return FALSE;
}
WORD TreeView::tvnDeleteItem(const TreeViewMessageHeader &/*treeViewMessageHeader*/)
{
return FALSE;
}
WORD TreeView::tvnBeginLabelEdit(const TreeViewDisplayInfo &/*treeViewDisplayInfo*/)
{
return FALSE;
}
WORD TreeView::tvnEndLabelEdit(const TreeViewDisplayInfo &/*treeViewDisplayInfo*/)
{
return FALSE;
}
WORD TreeView::tvnKeyDown(const TreeViewKeyDown &/*treeViewMessageHeader*/)
{
return FALSE;
}

428
imagelst/TREEVIEW.HPP Normal file
View File

@@ -0,0 +1,428 @@
#ifndef _IMAGELIST_TREEVIEW_HPP_
#define _IMAGELIST_TREEVIEW_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_COMMCTRL_HPP_
#include <common/commctrl.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
#ifndef _COMMON_RECTANGLE_HPP_
#include <common/rect.hpp>
#endif
#ifndef _COMMON_CALLBACK_HPP_
#include <common/callback.hpp>
#endif
#ifndef _COMMON_HOOKPROC_HPP_
#include <common/hookproc.hpp>
#endif
#ifndef _COMMON_CONTROL_HPP_
#include <common/control.hpp>
#endif
#ifndef _IMAGELIST_IMAGELIST_HPP_
#include <imagelst/imagelst.hpp>
#endif
#ifndef _IMAGELIST_TREEVIEWINSERT_HPP_
#include <imagelst/tvinsert.hpp>
#endif
#ifndef _IMAGELIST_TREEVIEWITEM_HPP_
#include <imagelst/tvitem.hpp>
#endif
class TreeViewMessageHeader;
class TreeViewDisplayInfo;
class TreeViewKeyDown;
class GUIWindow;
class HitTestInfo;
class TreeView : public Control
{
public:
enum TreeFlags{TreeHasButtons=TVS_HASBUTTONS,TreeHasLines=TVS_HASLINES,TreeLinesAtRoot=TVS_LINESATROOT,TreeEditLabels=TVS_EDITLABELS,TreeDisableDragDrop=TVS_DISABLEDRAGDROP,TreeShowSelAlways=TVS_SHOWSELALWAYS};
enum TreeExpand{Collapse=TVE_COLLAPSE,CollapseReset=TVE_COLLAPSERESET,Expand=TVE_EXPAND,Toggle=TVE_TOGGLE};
enum NodeType{NodeChild=0,NodeSibling=1};
enum ListType{Normal=TVSIL_NORMAL,State=TVSIL_STATE};
TreeView(GUIWindow &parentWindow,const Rect &winRect,int controlID,DWORD viewFlags=TreeHasLines);
virtual ~TreeView();
HIMAGELIST setImageList(ImageList &someImageList,WORD itemIndex=0);
HIMAGELIST createDragImage(HTREEITEM hTreeItem);
HTREEITEM addRootNode(DWORD indexImage,const String &textString,DWORD userData);
HWND getEditControl(void)const;
String currentSelection(void)const;
String currentParentSelection(void)const;
String getRootItemText(void)const;
UINT getCount(void)const;
HTREEITEM getRoot(void)const;
HTREEITEM getChild(HTREEITEM hTreeItem)const;
HTREEITEM getNextSibling(HTREEITEM hTreeItem)const;
HTREEITEM getParent(HTREEITEM hTreeItem)const;
HTREEITEM hitTest(HitTestInfo &someHitTestInfo)const;
HTREEITEM selectItem(HTREEITEM hTreeItem)const;
HTREEITEM selectRoot(void)const;
HTREEITEM selectDropTarget(HTREEITEM hTreeItem)const;
HTREEITEM insertItem(TreeViewInsert &someTreeViewInsert);
HTREEITEM searchItem(const String &searchString,HTREEITEM hDescendItem=(HTREEITEM)0)const;
HIMAGELIST getImageList(ListType listType=Normal);
const TreeViewInsert &lastInsert(void)const;
WORD addNode(NodeType nodeType,TreeViewItem &insertTreeViewItem,const String &parentString,WORD selected=FALSE,BYTE delimeter=0);
WORD appendNode(NodeType nodeType,DWORD itemIndex,const String &text,DWORD userData,WORD selected=FALSE);
WORD moveTree(int left,int top,int right,int bottom,WORD repaint=TRUE)const;
WORD getItemRect(Rect &itemRect,BOOL boundingText=TRUE)const;
WORD getItemRect(Rect &itemRect,HTREEITEM hTreeItem,BOOL boundingText=TRUE)const;
WORD getItem(TreeViewItem &someTreeViewItem)const;
WORD setItem(const TreeViewItem &someTreeViewItem)const;
WORD remove(HTREEITEM hTreeItem)const;
WORD remove(const String &nodeName)const;
WORD setRedraw(WORD redrawFlag)const;
WORD setFocus(void)const;
WORD remove(void)const;
WORD isOkay(void)const;
protected:
virtual WORD tvnSelChanging(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnSelChanged(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnGetDispInfo(TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnSetDispInfo(TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnItemExpanding(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnItemExpanded(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnBeginDrag(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnBeginRDrag(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnDeleteItem(const TreeViewMessageHeader &treeViewMessageHeader);
virtual WORD tvnBeginLabelEdit(const TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnEndLabelEdit(const TreeViewDisplayInfo &treeViewDisplayInfo);
virtual WORD tvnKeyDown(const TreeViewKeyDown &treeViewKeyDown);
private:
CallbackData::ReturnType notifyHandler(CallbackData &someCallbackData);
CallbackData::ReturnType rightButtonUpHandler(CallbackData &someCallbackData);
CallbackData::ReturnType rightButtonDownHandler(CallbackData &someCallbackData);
WORD handleGetDisplayInfo(CallbackData &someCallackData);
void createTreeView(const Rect &winRect,DWORD viewFlags,int controlID);
HTREEITEM selectSetFirstVisible(HTREEITEM hTreeItem);
HTREEITEM getDropHilight(void);
HTREEITEM getSelection(void)const;
HTREEITEM getFirstVisible(void);
HTREEITEM select(HTREEITEM hTreeItem,WPARAM code)const;
HTREEITEM getNextItem(HTREEITEM hTreeItem,WPARAM code)const;
HTREEITEM getPrevSibling(HTREEITEM hTreeItem);
HTREEITEM getNextVisible(HTREEITEM hTreeItem);
HTREEITEM getPrevVisible(HTREEITEM hTreeItem);
WORD sortChildren(HTREEITEM hTreeItem,WPARAM recurse);
WORD expand(HTREEITEM hTreeItem,WPARAM code);
WORD getISearchString(String &searchString);
WORD searchInsert(NodeType nodeType,TreeViewItem &viewItem,TreeViewInsert &viewInsert,const String &parentString,HTREEITEM hParentItem,HTREEITEM hChildItem,BYTE delimeter=0);
WORD ensureVisible(HTREEITEM hTreeItem);
WORD endEditLabelNow(WPARAM cancel);
WORD setIndent(WORD indent);
HWND getEditLabel(HTREEITEM hTreeItem);
UINT getVisibleCount(void);
UINT getIndent(void);
UINT indent(void);
void indent(UINT indent);
Callback<TreeView> mNotifyHandler;
GUIWindow &mParentWindow;
TreeViewInsert mLastInsert;
};
inline
UINT TreeView::indent(void)
{
if(!isOkay())return FALSE;
return (UINT)sendMessage(TVM_GETINDENT,0,0L);
}
inline
void TreeView::indent(UINT indent)
{
if(!isOkay())return;
sendMessage(TVM_SETINDENT,(WPARAM)indent,0L);
}
inline
HTREEITEM TreeView::insertItem(TreeViewInsert &someTreeViewInsert)
{
HTREEITEM hTreeItem;
if(!isOkay())return FALSE;
hTreeItem=(HTREEITEM)sendMessage(TVM_INSERTITEM,0,(LPARAM)&((TV_INSERTSTRUCT&)someTreeViewInsert));
if(hTreeItem){mLastInsert=someTreeViewInsert;mLastInsert.insertAfter(hTreeItem);}
return hTreeItem;
}
inline
WORD TreeView::remove(HTREEITEM hTreeItem)const
{
if(!isOkay())return FALSE;
return sendMessage(TVM_DELETEITEM,0,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
WORD TreeView::expand(HTREEITEM hTreeItem,WPARAM code)
{
if(!isOkay())return FALSE;
return sendMessage(TVM_EXPAND,(WPARAM)code,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
UINT TreeView::getCount(void)const
{
if(!isOkay())return FALSE;
return (UINT)sendMessage(TVM_GETCOUNT,0,0L);
}
inline
UINT TreeView::getIndent(void)
{
if(!isOkay())return FALSE;
return (UINT)sendMessage(TVM_GETINDENT,0,0L);
}
inline
WORD TreeView::setIndent(WORD indent)
{
if(!isOkay())return FALSE;
return (WORD)sendMessage(TVM_SETINDENT,(WPARAM)indent,0L);
}
inline
HIMAGELIST TreeView::getImageList(ListType listType)
{
if(!isOkay())return FALSE;
return (HIMAGELIST)sendMessage(TVM_GETIMAGELIST,(WPARAM)listType,0L);
}
inline
HIMAGELIST TreeView::setImageList(ImageList &someImageList,WORD indexImage)
{
if(!isOkay()||!someImageList.isOkay())return FALSE;
return (HIMAGELIST)sendMessage(TVM_SETIMAGELIST,indexImage,(LPARAM)(HIMAGELIST)someImageList);
}
inline
HTREEITEM TreeView::getNextItem(HTREEITEM hTreeItem,WPARAM code)const
{
if(!isOkay())return FALSE;
return (HTREEITEM)sendMessage(TVM_GETNEXTITEM,(WPARAM)code,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
HTREEITEM TreeView::getChild(HTREEITEM hTreeItem)const
{
return getNextItem(hTreeItem,TVGN_CHILD);
}
inline
HTREEITEM TreeView::getNextSibling(HTREEITEM hTreeItem)const
{
return getNextItem(hTreeItem,TVGN_NEXT);
}
inline
HTREEITEM TreeView::getPrevSibling(HTREEITEM hTreeItem)
{
return getNextItem(hTreeItem,TVGN_PREVIOUS);
}
inline
HTREEITEM TreeView::getParent(HTREEITEM hTreeItem)const
{
return getNextItem(hTreeItem,TVGN_PARENT);
}
inline
HTREEITEM TreeView::getFirstVisible(void)
{
return getNextItem(0,TVGN_FIRSTVISIBLE);
}
inline
HTREEITEM TreeView::getNextVisible(HTREEITEM hTreeItem)
{
return getNextItem(hTreeItem,TVGN_NEXTVISIBLE);
}
inline
HTREEITEM TreeView::getPrevVisible(HTREEITEM hTreeItem)
{
return getNextItem(hTreeItem,TVGN_PREVIOUSVISIBLE);
}
inline
HTREEITEM TreeView::getSelection(void)const
{
return getNextItem(0,TVGN_CARET);
}
inline
HTREEITEM TreeView::getDropHilight(void)
{
return getNextItem(0,TVGN_DROPHILITE);
}
inline
HTREEITEM TreeView::getRoot(void)const
{
return getNextItem(0,TVGN_ROOT);
}
inline
HTREEITEM TreeView::select(HTREEITEM hTreeItem,WPARAM code)const
{
if(!isOkay())return FALSE;
return (HTREEITEM)sendMessage(TVM_SELECTITEM,(WPARAM)code,(LPARAM)(HTREEITEM)(hTreeItem));
}
inline
HTREEITEM TreeView::selectItem(HTREEITEM hTreeItem)const
{
return select(hTreeItem,TVGN_CARET);
}
inline
HTREEITEM TreeView::selectRoot(void)const
{
return selectItem(getRoot());
}
inline
HTREEITEM TreeView::selectDropTarget(HTREEITEM hTreeItem)const
{
return select(hTreeItem,TVGN_DROPHILITE);
}
inline
HTREEITEM TreeView::selectSetFirstVisible(HTREEITEM hTreeItem)
{
return select(hTreeItem,TVGN_FIRSTVISIBLE);
}
inline
WORD TreeView::getItem(TreeViewItem &someTreeViewItem)const
{
if(!isOkay())return FALSE;
return (WORD)sendMessage(TVM_GETITEM,0,(LPARAM)&((TV_ITEM&)someTreeViewItem));
}
inline
WORD TreeView::setItem(const TreeViewItem &someTreeViewItem)const
{
if(!isOkay())return FALSE;
return (WORD)sendMessage(TVM_SETITEM,0,(LPARAM)&((TV_ITEM&)(TreeViewItem&)someTreeViewItem));
}
inline
HWND TreeView::getEditLabel(HTREEITEM hTreeItem)
{
if(!isOkay())return FALSE;
return (HWND)sendMessage(TVM_EDITLABEL,0,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
HWND TreeView::getEditControl(void)const
{
if(!isOkay())return FALSE;
return (HWND)sendMessage(TVM_GETEDITCONTROL,0,0L);
}
inline
UINT TreeView::getVisibleCount(void)
{
if(!isOkay())return FALSE;
return (UINT)sendMessage(TVM_GETVISIBLECOUNT,0,0L);
}
inline
HIMAGELIST TreeView::createDragImage(HTREEITEM hTreeItem)
{
if(!isOkay())return FALSE;
return (HIMAGELIST)sendMessage(TVM_CREATEDRAGIMAGE,0,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
WORD TreeView::sortChildren(HTREEITEM hTreeItem,WPARAM recurse)
{
if(!isOkay())return FALSE;
return sendMessage(TVM_SORTCHILDREN,(WPARAM)recurse,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
WORD TreeView::ensureVisible(HTREEITEM hTreeItem)
{
if(!isOkay())return FALSE;
return sendMessage(TVM_ENSUREVISIBLE,(WPARAM)0,(LPARAM)(HTREEITEM)hTreeItem);
}
inline
WORD TreeView::endEditLabelNow(WPARAM cancel)
{
if(!isOkay())return FALSE;
return sendMessage(TVM_ENDEDITLABELNOW,(WPARAM)cancel,0L);
}
inline
WORD TreeView::getISearchString(String &searchString)
{
if(!isOkay())return FALSE;
return (WORD)sendMessage(TVM_GETISEARCHSTRING,0,(LPARAM)(LPSTR)searchString);
}
inline
WORD TreeView::getItemRect(Rect &itemRect,BOOL boundingText)const
{
if(!isOkay())return FALSE;
*((HTREEITEM*)&((RECT&)itemRect))=getSelection();
return (WORD)sendMessage(TVM_GETITEMRECT,boundingText,(LPARAM)&((RECT&)itemRect));
}
inline
WORD TreeView::getItemRect(Rect &itemRect,HTREEITEM hTreeItem,BOOL boundingText)const
{
if(!isOkay())return FALSE;
*((HTREEITEM*)&((RECT&)itemRect))=hTreeItem;
return (WORD)sendMessage(TVM_GETITEMRECT,boundingText,(LPARAM)&((RECT&)itemRect));
}
inline
WORD TreeView::setRedraw(WORD redrawFlag)const
{
if(!isOkay())return FALSE;
return (WORD)sendMessage(WM_SETREDRAW,redrawFlag,0L);
}
inline
WORD TreeView::moveTree(int left,int top,int right,int bottom,WORD repaint)const
{
if(!isOkay())return FALSE;
return moveWindow(left,top,right,bottom,repaint);
}
inline
WORD TreeView::setFocus(void)const
{
if(!isOkay())return FALSE;
setFocus();
return TRUE;
}
inline
WORD TreeView::remove(const String &nodeName)const
{
if(!isOkay())return FALSE;
HTREEITEM hTreeItem(searchItem(nodeName));
if(!hTreeItem)return FALSE;
return remove(hTreeItem);
}
inline
const TreeViewInsert &TreeView::lastInsert(void)const
{
return mLastInsert;
}
inline
WORD TreeView::isOkay(void)const
{
return isValid();
}
#endif

117
imagelst/TVDISP.HPP Normal file
View File

@@ -0,0 +1,117 @@
#ifndef _IMAGELIST_TREEVIEWDISPLAYINFO_HPP_
#define _IMAGELIST_TREEVIEWDISPLAYINFO_HPP_
#ifndef _COMMON_NOTIFYMESSAGEHEADER_HPP_
#include <common/notify.hpp>
#endif
#ifndef _IMAGELIST_TREEVIEWITEM_HPP_
#include <imagelst/tvitem.hpp>
#endif
class TreeViewDisplayInfo : private TV_DISPINFO
{
public:
TreeViewDisplayInfo(void);
TreeViewDisplayInfo(const TreeViewDisplayInfo &someTreeViewDisplayInfo);
TreeViewDisplayInfo(const TV_DISPINFO &someTVDISPINFO);
virtual ~TreeViewDisplayInfo();
TreeViewDisplayInfo &operator=(const TreeViewDisplayInfo &someTreeViewDisplayInfo);
TreeViewDisplayInfo &operator=(const TV_DISPINFO &someTVDISPINFO);
WORD operator==(const TreeViewDisplayInfo &someTreeViewDisplayInfo)const;
WORD operator==(const TV_DISPINFO &someTVDISPINFO)const;
operator TV_DISPINFO &(void);
NotifyMessageHeader nmHeader(void)const;
void nmHeader(const NotifyMessageHeader &someNotifyMessageHeader);
TreeViewItem item(void)const;
void item(const TreeViewItem &someTreeViewItem);
private:
void init(void);
};
inline
TreeViewDisplayInfo::TreeViewDisplayInfo(void)
{
init();
}
inline
TreeViewDisplayInfo::TreeViewDisplayInfo(const TreeViewDisplayInfo &someTreeViewDisplayInfo)
{
*this=someTreeViewDisplayInfo;
}
inline
TreeViewDisplayInfo::TreeViewDisplayInfo(const TV_DISPINFO &someTVDISPINFO)
{
*this=someTVDISPINFO;
}
inline
TreeViewDisplayInfo::~TreeViewDisplayInfo()
{
}
inline
TreeViewDisplayInfo &TreeViewDisplayInfo::operator=(const TreeViewDisplayInfo &someTreeViewDisplayInfo)
{
nmHeader(someTreeViewDisplayInfo.nmHeader());
item(someTreeViewDisplayInfo.item());
return *this;
}
inline
TreeViewDisplayInfo &TreeViewDisplayInfo::operator=(const TV_DISPINFO &someTVDISPINFO)
{
(TV_DISPINFO&)*this=someTVDISPINFO;
return *this;
}
inline
WORD TreeViewDisplayInfo::operator==(const TreeViewDisplayInfo &someTreeViewDisplayInfo)const
{
return (nmHeader()==someTreeViewDisplayInfo.nmHeader()&&
item()==someTreeViewDisplayInfo.item());
}
inline
WORD TreeViewDisplayInfo::operator==(const TV_DISPINFO &someTVDISPINFO)const
{
return (nmHeader()==NotifyMessageHeader(someTVDISPINFO.hdr)&&
item()==TreeViewItem(someTVDISPINFO.item));
}
inline
TreeViewDisplayInfo::operator TV_DISPINFO &(void)
{
return *this;
}
inline
NotifyMessageHeader TreeViewDisplayInfo::nmHeader(void)const
{
return TV_DISPINFO::hdr;
}
inline
void TreeViewDisplayInfo::nmHeader(const NotifyMessageHeader &someNotifyMessageHeader)
{
TV_DISPINFO::hdr=(NMHDR&)someNotifyMessageHeader;
}
inline
TreeViewItem TreeViewDisplayInfo::item(void)const
{
return TV_DISPINFO::item;
}
inline
void TreeViewDisplayInfo::item(const TreeViewItem &someTreeViewItem)
{
TV_DISPINFO::item=(TV_ITEM&)someTreeViewItem;
}
inline
void TreeViewDisplayInfo::init(void)
{
::memset(&((TV_DISPINFO&)*this),0,sizeof(TV_DISPINFO));
}
#endif

59
imagelst/TVINFO.HPP Normal file
View File

@@ -0,0 +1,59 @@
#ifndef _IMAGELST_TREEVIEWINFO_HPP_
#define _IMAGELST_TREEVIEWINFO_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_COMMCTRL_HPP_
#include <common/commctrl.hpp>
#endif
#ifndef _IMAGELIST_NOTIFYMESSAGEHEADER_HPP_
#include <imagelst/notify.hpp>
#endif
#ifndef _IMAGELST_TREEVIEWINFO_HPP_
#include <imagelst/tvinfo.hpp>
#endif
class TreeViewInfo : public NotifyMessageHeader, public TreeViewItem
{
public:
TreeViewInfo(void);
TreeViewInfo(const TreeViewInfo &someTreeViewInfo);
~TreeViewInfo();
TreeViewInfo &operator=(const TreeViewInfo &someTreeViewInfo);
WORD operator==(const TreeViewInfo &someTreeViewInfo)const;
private:
};
inline
TreeViewInfo::TreeViewInfo(void)
{
}
inline
TreeViewInfo::TreeViewInfo(const TreeViewInfo &someTreeViewInfo)
{
*this=someTreeViewInfo;
}
inline
TreeViewInfo::~TreeViewInfo()
{
}
inline
TreeViewInfo &TreeViewInfo::operator=(const TreeViewInfo &someTreeViewInfo)
{
(NotifyMessageHeader&)*this=(NotifyMessageHeader&)someTreeViewInfo;
(TreeViewItem&)*this=(TreeViewItem&)someTreeViewInfo;
return *this;
}
inline
WORD TreeViewInfo::operator==(const TreeViewInfo &someTreeViewInfo)const
{
return ((NotifyMessageHeader&)*this==(NotifyMessageHeader&)someTreeViewInfo&&
(TreeViewItem&)*this==(TreeViewItem&)someTreeViewInfo);
}
#endif

109
imagelst/TVINSERT.HPP Normal file
View File

@@ -0,0 +1,109 @@
#ifndef _IMAGELIST_TREEVIEWINSERT_HPP_
#define _IMAGELIST_TREEVIEWINSERT_HPP_
#ifndef _COMMON_COMMCTRL_HPP_
#include <common/commctrl.hpp>
#endif
#ifndef _IMAGELIST_TREEVIEWITEM_HPP_
#include <imagelst/tvitem.hpp>
#endif
class TreeViewInsert : private TV_INSERTSTRUCT
{
public:
enum InsertFlags{InsertRoot=(int)TVI_ROOT,InsertFirst=(int)TVI_FIRST,
InsertLast=(int)TVI_LAST,InsertSort=(int)TVI_SORT};
enum GetFlags{GetRoot=TVGN_ROOT,GetNext=TVGN_NEXT,GetPrevious=TVGN_PREVIOUS,
GetParent=TVGN_PARENT,GetChild=TVGN_CHILD,GetFirstVisible=TVGN_FIRSTVISIBLE,
GetNextVisible=TVGN_NEXTVISIBLE,GetPreviousVisible=TVGN_PREVIOUSVISIBLE,
GetDropHilite=TVGN_DROPHILITE,GetCaret=TVGN_CARET};
TreeViewInsert(void);
TreeViewInsert(const TreeViewInsert &someTreeViewInsert);
virtual ~TreeViewInsert();
operator TV_INSERTSTRUCT&(void);
TreeViewInsert &operator=(const TreeViewInsert &someTreeViewInsert);
HTREEITEM parent(void)const;
void parent(HTREEITEM hParent);
HTREEITEM insertAfter(void)const;
void insertAfter(HTREEITEM hInsertAfter);
void insertAfter(InsertFlags insertFlags);
TreeViewItem viewItem(void)const;
void viewItem(const TreeViewItem &someTreeViewItem);
private:
};
inline
TreeViewInsert::TreeViewInsert(void)
{
parent(0);
insertAfter(0);
viewItem(TreeViewItem());
}
inline
TreeViewInsert::TreeViewInsert(const TreeViewInsert &someTreeViewInsert)
{
*this=someTreeViewInsert;
}
inline
TreeViewInsert::~TreeViewInsert()
{
}
inline
TreeViewInsert &TreeViewInsert::operator=(const TreeViewInsert &someTreeViewInsert)
{
parent(someTreeViewInsert.parent());
insertAfter(someTreeViewInsert.insertAfter());
viewItem(someTreeViewInsert.viewItem());
return *this;
}
inline
TreeViewInsert::operator TV_INSERTSTRUCT&(void)
{
return *this;
}
inline
HTREEITEM TreeViewInsert::parent(void)const
{
return TV_INSERTSTRUCT::hParent;
}
inline
void TreeViewInsert::parent(HTREEITEM hParent)
{
TV_INSERTSTRUCT::hParent=hParent;
}
inline
HTREEITEM TreeViewInsert::insertAfter(void)const
{
return TV_INSERTSTRUCT::hInsertAfter;
}
inline
void TreeViewInsert::insertAfter(HTREEITEM hInsertAfter)
{
TV_INSERTSTRUCT::hInsertAfter=hInsertAfter;
}
inline
void TreeViewInsert::insertAfter(InsertFlags insertFlags)
{
TV_INSERTSTRUCT::hInsertAfter=((HTREEITEM)insertFlags);
}
inline
TreeViewItem TreeViewInsert::viewItem(void)const
{
return TreeViewItem(TV_INSERTSTRUCT::item);
}
inline
void TreeViewInsert::viewItem(const TreeViewItem &someTreeViewItem)
{
::memcpy((char*)&item,(char*)&((TV_ITEM&)someTreeViewItem),sizeof(TV_ITEM));
}
#endif

300
imagelst/TVITEM.HPP Normal file
View File

@@ -0,0 +1,300 @@
#ifndef _IMAGELIST_TREEVIEWITEM_HPP_
#define _IMAGELIST_TREEVIEWITEM_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_COMMCTRL_HPP_
#include <common/commctrl.hpp>
#endif
class TreeViewItem : private TV_ITEM
{
public:
enum ItemFlags{MaskText=TVIF_TEXT,MaskImage=TVIF_IMAGE,MaskParam=TVIF_PARAM,
MaskState=TVIF_STATE,MaskHandle=TVIF_HANDLE,MaskSelectedImage=TVIF_SELECTEDIMAGE,
MaskChildren=TVIF_CHILDREN};
enum StateFlags{StateSelected=TVIS_SELECTED,StateCut=TVIS_CUT,
StateDropHilited=TVIS_DROPHILITED,StateBold=TVIS_BOLD,
StateExpanded=TVIS_EXPANDED,StateExpandedOnce=TVIS_EXPANDEDONCE};
TreeViewItem(void);
TreeViewItem(const TreeViewItem &someTreeViewItem);
TreeViewItem(const TV_ITEM &someTVITEM);
TreeViewItem(UINT maskParam,HTREEITEM itemParam,UINT stateParam,UINT stateMask,LPSTR pszTextParam,DWORD maxTextParam,DWORD imageParam,DWORD selectedImageParam,DWORD childrenParam,DWORD lParam);
virtual ~TreeViewItem();
TreeViewItem &operator=(const TreeViewItem &someTreeViewItem);
TreeViewItem &operator=(const TV_ITEM &someTVITEM);
WORD operator==(const TreeViewItem &someTreeViewItem)const;
WORD operator==(const TV_ITEM &someTVITEM)const;
operator TV_ITEM&(void);
UINT mask(void)const;
void mask(UINT mask);
HTREEITEM item(void)const;
void item(HTREEITEM item);
UINT state(void)const;
void state(UINT state);
UINT stateMask(void)const;
void stateMask(UINT stateMask);
LPSTR text(void)const;
void text(LPSTR pszText);
DWORD maxText(void)const;
void maxText(DWORD maxText);
DWORD image(void)const;
void image(DWORD image);
DWORD selectedImage(void)const;
void selectedImage(DWORD selectedImage);
DWORD children(void)const;
void children(DWORD children);
LPARAM lParam(void)const;
void lParam(LPARAM lParam);
private:
void clearData(void);
};
inline
TreeViewItem::TreeViewItem(void)
{
clearData();
}
inline
TreeViewItem::TreeViewItem(const TreeViewItem &someTreeViewItem)
{
clearData();
*this=someTreeViewItem;
}
inline
TreeViewItem::TreeViewItem(const TV_ITEM &someTVITEM)
{
*this=someTVITEM;
}
inline
TreeViewItem::TreeViewItem(UINT maskParam,HTREEITEM itemParam,UINT stateParam,UINT stateMaskParam,LPSTR pszTextParam,DWORD maxTextParam,DWORD imageParam,DWORD selectedImageParam,DWORD childrenParam,DWORD lParamParam)
{
clearData();
mask(maskParam);
item(itemParam);
state(stateParam);
stateMask(stateMaskParam);
text(pszTextParam);
maxText(maxTextParam);
image(imageParam);
selectedImage(selectedImageParam);
children(childrenParam);
lParam(lParamParam);
}
inline
TreeViewItem::~TreeViewItem()
{
}
inline
TreeViewItem::operator TV_ITEM &(void)
{
return *this;
}
inline
TreeViewItem &TreeViewItem::operator=(const TreeViewItem &someTreeViewItem)
{
mask(someTreeViewItem.mask());
item(someTreeViewItem.item());
state(someTreeViewItem.state());
stateMask(someTreeViewItem.stateMask());
text(someTreeViewItem.text());
maxText(someTreeViewItem.maxText());
image(someTreeViewItem.image());
selectedImage(someTreeViewItem.selectedImage());
children(someTreeViewItem.children());
lParam(someTreeViewItem.lParam());
return *this;
}
inline
TreeViewItem &TreeViewItem::operator=(const TV_ITEM &someTVITEM)
{
mask(someTVITEM.mask);
item(someTVITEM.hItem);
state(someTVITEM.state);
stateMask(someTVITEM.stateMask);
text(someTVITEM.pszText);
maxText(someTVITEM.cchTextMax);
image(someTVITEM.iImage);
selectedImage(someTVITEM.iSelectedImage);
children(someTVITEM.cChildren);
lParam(someTVITEM.lParam);
return *this;
}
inline
WORD TreeViewItem::operator==(const TreeViewItem &someTreeViewItem)const
{
return (mask()==someTreeViewItem.mask()&&
item()==someTreeViewItem.item()&&
state()==someTreeViewItem.state()&&
stateMask()==someTreeViewItem.stateMask()&&
text()==someTreeViewItem.text()&&
maxText()==someTreeViewItem.maxText()&&
image()==someTreeViewItem.image()&&
selectedImage()==someTreeViewItem.selectedImage()&&
children()==someTreeViewItem.children()&&
lParam()==someTreeViewItem.lParam());
}
inline
WORD TreeViewItem::operator==(const TV_ITEM &someTVITEM)const
{
return (TV_ITEM::mask==someTVITEM.mask&&
TV_ITEM::hItem==someTVITEM.hItem&&
TV_ITEM::state==someTVITEM.state&&
TV_ITEM::stateMask==someTVITEM.stateMask&&
TV_ITEM::pszText==someTVITEM.pszText&&
TV_ITEM::cchTextMax==someTVITEM.cchTextMax&&
TV_ITEM::iImage==someTVITEM.iImage&&
TV_ITEM::iSelectedImage==someTVITEM.iSelectedImage&&
TV_ITEM::cChildren==someTVITEM.cChildren&&
TV_ITEM::lParam==someTVITEM.lParam);
}
inline
void TreeViewItem::clearData(void)
{
TV_ITEM::mask=0;
TV_ITEM::hItem=0;
TV_ITEM::state=0;
TV_ITEM::stateMask=0;
TV_ITEM::pszText=0;
TV_ITEM::cchTextMax=0;
TV_ITEM::iImage=0;
TV_ITEM::iSelectedImage=0;
TV_ITEM::cChildren=0;
TV_ITEM::lParam=0;
}
inline
UINT TreeViewItem::mask(void)const
{
return TV_ITEM::mask;
}
inline
void TreeViewItem::mask(UINT mask)
{
TV_ITEM::mask=mask;
}
inline
HTREEITEM TreeViewItem::item(void)const
{
return TV_ITEM::hItem;
}
inline
void TreeViewItem::item(HTREEITEM hItem)
{
TV_ITEM::hItem=hItem;
}
inline
UINT TreeViewItem::state(void)const
{
return TV_ITEM::state;
}
inline
void TreeViewItem::state(UINT state)
{
TV_ITEM::state=state;
}
inline
UINT TreeViewItem::stateMask(void)const
{
return TV_ITEM::stateMask;
}
inline
void TreeViewItem::stateMask(UINT stateMask)
{
TV_ITEM::stateMask=stateMask;
}
inline
LPSTR TreeViewItem::text(void)const
{
return TV_ITEM::pszText;
}
inline
void TreeViewItem::text(LPSTR pszText)
{
TV_ITEM::pszText=pszText;
}
inline
DWORD TreeViewItem::maxText(void)const
{
return TV_ITEM::cchTextMax;
}
inline
void TreeViewItem::maxText(DWORD maxText)
{
TV_ITEM::cchTextMax=maxText;
}
inline
DWORD TreeViewItem::image(void)const
{
return TV_ITEM::iImage;
}
inline
void TreeViewItem::image(DWORD image)
{
TV_ITEM::iImage=image;
}
inline
DWORD TreeViewItem::selectedImage(void)const
{
return TV_ITEM::iSelectedImage;
}
inline
void TreeViewItem::selectedImage(DWORD selectedImage)
{
TV_ITEM::iSelectedImage=selectedImage;
}
inline
DWORD TreeViewItem::children(void)const
{
return TV_ITEM::cChildren;
}
inline
void TreeViewItem::children(DWORD children)
{
TV_ITEM::cChildren=children;
}
inline
LPARAM TreeViewItem::lParam(void)const
{
return TV_ITEM::lParam;
}
inline
void TreeViewItem::lParam(LPARAM lParam)
{
TV_ITEM::lParam=lParam;
}
#endif

72
imagelst/TVITEMEX.HPP Normal file
View File

@@ -0,0 +1,72 @@
#ifndef _IMAGELST_TREEVIEWITEMEX_HPP_
#define _IMAGELST_TREEVIEWITEMEX_HPP_
#ifndef _IMAGELIST_TREEVIEWITEM_HPP_
#include <imagelst/tvitem.hpp>
#endif
class TreeViewItemEx : public TreeViewItem
{
public:
TreeViewItemEx(void);
TreeViewItemEx(const TreeViewItemEx &someTreeViewItemEx);
TreeViewItemEx(const TreeViewItem &someTreeViewItem);
~TreeViewItemEx();
TreeViewItemEx &operator=(const TreeViewItemEx &someTreeViewItemEx);
WORD operator==(const TreeViewItemEx &someTreeViewItemEx);
HTREEITEM parent(void)const;
void parent(HTREEITEM parent);
private:
HTREEITEM mhParent;
};
inline
TreeViewItemEx::TreeViewItemEx(void)
: mhParent(0)
{
}
inline
TreeViewItemEx::TreeViewItemEx(const TreeViewItemEx &someTreeViewItemEx)
{
*this=someTreeViewItemEx;
}
inline
TreeViewItemEx::TreeViewItemEx(const TreeViewItem &someTreeViewItem)
: mhParent(0), TreeViewItem(someTreeViewItem)
{
}
inline
TreeViewItemEx::~TreeViewItemEx()
{
}
inline
TreeViewItemEx &TreeViewItemEx::operator=(const TreeViewItemEx &someTreeViewItemEx)
{
(TreeViewItem&)*this=(TreeViewItem&)someTreeViewItemEx;
parent(someTreeViewItemEx.parent());
return *this;
}
inline
WORD TreeViewItemEx::operator==(const TreeViewItemEx &someTreeViewItemEx)
{
return ((TreeViewItem&)*this==(TreeViewItem&)someTreeViewItemEx&&
parent()==someTreeViewItemEx.parent());
}
inline
HTREEITEM TreeViewItemEx::parent(void)const
{
return mhParent;
}
inline
void TreeViewItemEx::parent(HTREEITEM hParent)
{
mhParent=hParent;
}
#endif

134
imagelst/TVKEY.HPP Normal file
View File

@@ -0,0 +1,134 @@
#ifndef _IMAGELIST_TREEVIEWKEYDOWN_HPP_
#define _IMAGELIST_TREEVIEWKEYDOWN_HPP_
#ifndef _COMMON_NOTIFYMESSAGEHEADER_HPP_
#include <common/notify.hpp>
#endif
#ifndef _IMAGELIST_TREEVIEWITEM_HPP_
#include <imagelst/tvitem.hpp>
#endif
class TreeViewKeyDown : private TV_KEYDOWN
{
public:
TreeViewKeyDown(void);
TreeViewKeyDown(const TreeViewKeyDown &someTreeViewKeyDown);
TreeViewKeyDown(const TV_KEYDOWN &someTVKEYDOWN);
virtual ~TreeViewKeyDown();
TreeViewKeyDown &operator=(const TreeViewKeyDown &someTreeViewKeyDown);
TreeViewKeyDown &operator=(const TV_KEYDOWN &someTVKEYDOWN);
BOOL operator==(const TreeViewKeyDown &someTreeViewKeyDown)const;
BOOL operator==(const TV_KEYDOWN &someTVKEYDOWN)const;
operator TV_KEYDOWN &(void);
NotifyMessageHeader nmHeader(void)const;
void nmHeader(const NotifyMessageHeader &someNotifyMessageHeader);
WORD virtualKey(void)const;
void virtualKey(WORD virtualKey);
UINT flags(void)const;
void flags(UINT flags);
private:
void init(void);
};
inline
TreeViewKeyDown::TreeViewKeyDown(void)
{
init();
}
inline
TreeViewKeyDown::TreeViewKeyDown(const TreeViewKeyDown &someTreeViewKeyDown)
{
*this=someTreeViewKeyDown;
}
inline
TreeViewKeyDown::TreeViewKeyDown(const TV_KEYDOWN &someTVKEYDOWN)
{
*this=someTVKEYDOWN;
}
inline
TreeViewKeyDown::~TreeViewKeyDown()
{
}
inline
TreeViewKeyDown &TreeViewKeyDown::operator=(const TreeViewKeyDown &someTreeViewKeyDown)
{
nmHeader(someTreeViewKeyDown.nmHeader());
virtualKey(someTreeViewKeyDown.virtualKey());
flags(someTreeViewKeyDown.flags());
return *this;
}
inline
TreeViewKeyDown &TreeViewKeyDown::operator=(const TV_KEYDOWN &someTVKEYDOWN)
{
(TV_KEYDOWN&)*this=someTVKEYDOWN;
return *this;
}
inline
BOOL TreeViewKeyDown::operator==(const TreeViewKeyDown &someTreeViewKeyDown)const
{
return (nmHeader()==someTreeViewKeyDown.nmHeader()&&
virtualKey()==someTreeViewKeyDown.virtualKey()&&
flags()==someTreeViewKeyDown.flags());
}
inline
BOOL TreeViewKeyDown::operator==(const TV_KEYDOWN &someTVKEYDOWN)const
{
return (nmHeader()==NotifyMessageHeader(someTVKEYDOWN.hdr)&&
virtualKey()==someTVKEYDOWN.wVKey&&
flags()==someTVKEYDOWN.flags);
}
inline
TreeViewKeyDown::operator TV_KEYDOWN &(void)
{
return *this;
}
inline
NotifyMessageHeader TreeViewKeyDown::nmHeader(void)const
{
return TV_KEYDOWN::hdr;
}
inline
void TreeViewKeyDown::nmHeader(const NotifyMessageHeader &someNotifyMessageHeader)
{
TV_KEYDOWN::hdr=(NMHDR&)someNotifyMessageHeader;
}
inline
WORD TreeViewKeyDown::virtualKey(void)const
{
return TV_KEYDOWN::wVKey;
}
inline
void TreeViewKeyDown::virtualKey(WORD virtualKey)
{
TV_KEYDOWN::wVKey=virtualKey;
}
inline
UINT TreeViewKeyDown::flags(void)const
{
return TV_KEYDOWN::flags;
}
inline
void TreeViewKeyDown::flags(UINT flags)
{
TV_KEYDOWN::flags=flags;
}
inline
void TreeViewKeyDown::init(void)
{
::memset(&((TV_KEYDOWN&)*this),0,sizeof(TV_KEYDOWN));
}
#endif

173
imagelst/TVMSGHDR.HPP Normal file
View File

@@ -0,0 +1,173 @@
#ifndef _IMAGELIST_TREEVIEWMESSAGEHEADER_HPP_
#define _IMAGELIST_TREEVIEWMESSAGEHEADER_HPP_
#ifndef _COMMON_NOTIFYMESSAGEHEADER_HPP_
#include <common/notify.hpp>
#endif
#ifndef _IMAGELIST_TREEVIEWITEM_HPP_
#include <imagelst/tvitem.hpp>
#endif
#ifndef _COMMON_GDIPOINT_HPP_
#include <common/gdipoint.hpp>
#endif
class TreeViewMessageHeader : private NM_TREEVIEW
{
public:
TreeViewMessageHeader(void);
TreeViewMessageHeader(const TreeViewMessageHeader &someTreeViewMessageHeader);
TreeViewMessageHeader(const NM_TREEVIEW &someNMTREEVIEW);
virtual ~TreeViewMessageHeader();
TreeViewMessageHeader &operator=(const TreeViewMessageHeader &someTreeViewMessageHeader);
TreeViewMessageHeader &operator=(const NM_TREEVIEW &someNMTREEVIEW);
WORD operator==(const TreeViewMessageHeader &someTreeViewMessageHeader)const;
WORD operator==(const NM_TREEVIEW &someNMTREEVIEW)const;
NotifyMessageHeader nmHeader(void)const;
UINT action(void)const;
TreeViewItem itemOld(void)const;
TreeViewItem itemNew(void)const;
GDIPoint pointDrag(void)const;
private:
void init(void);
void nmHeader(NotifyMessageHeader &tvMessageHeader);
void action(UINT tvAction);
void itemOld(const TreeViewItem &tvItemOld);
void itemNew(const TreeViewItem &tvItemNew);
void pointDrag(const GDIPoint &tvDrawPoint);
};
inline
TreeViewMessageHeader::TreeViewMessageHeader(void)
{
init();
}
inline
TreeViewMessageHeader::TreeViewMessageHeader(const TreeViewMessageHeader &someTreeViewMessageHeader)
{
*this=someTreeViewMessageHeader;
}
inline
TreeViewMessageHeader::TreeViewMessageHeader(const NM_TREEVIEW &someNMTREEVIEW)
{
*this=someNMTREEVIEW;
}
inline
TreeViewMessageHeader::~TreeViewMessageHeader()
{
}
inline
TreeViewMessageHeader &TreeViewMessageHeader::operator=(const TreeViewMessageHeader &someTreeViewMessageHeader)
{
nmHeader(someTreeViewMessageHeader.nmHeader());
action(someTreeViewMessageHeader.action());
itemOld(someTreeViewMessageHeader.itemOld());
itemNew(someTreeViewMessageHeader.itemNew());
pointDrag(someTreeViewMessageHeader.pointDrag());
return *this;
}
inline
TreeViewMessageHeader &TreeViewMessageHeader::operator=(const NM_TREEVIEW &someNMTREEVIEW)
{
NM_TREEVIEW::hdr=someNMTREEVIEW.hdr;
NM_TREEVIEW::action=someNMTREEVIEW.action;
NM_TREEVIEW::itemOld=someNMTREEVIEW.itemOld;
NM_TREEVIEW::itemNew=someNMTREEVIEW.itemNew;
NM_TREEVIEW::ptDrag=someNMTREEVIEW.ptDrag;
return *this;
}
inline
WORD TreeViewMessageHeader::operator==(const TreeViewMessageHeader &someTreeViewMessageHeader)const
{
return (nmHeader()==someTreeViewMessageHeader.nmHeader()&&
action()==someTreeViewMessageHeader.action()&&
itemOld()==someTreeViewMessageHeader.itemOld()&&
itemNew()==someTreeViewMessageHeader.itemNew()&&
pointDrag()==someTreeViewMessageHeader.pointDrag());
}
inline
WORD TreeViewMessageHeader::operator==(const NM_TREEVIEW &someNMTREEVIEW)const
{
return (NotifyMessageHeader(NM_TREEVIEW::hdr)==NotifyMessageHeader(someNMTREEVIEW.hdr)&&
NM_TREEVIEW::action==someNMTREEVIEW.action&&
TreeViewItem(NM_TREEVIEW::itemOld)==TreeViewItem(someNMTREEVIEW.itemOld)&&
TreeViewItem(NM_TREEVIEW::itemNew)==TreeViewItem(someNMTREEVIEW.itemNew)&&
NM_TREEVIEW::ptDrag.x==someNMTREEVIEW.ptDrag.x&&
NM_TREEVIEW::ptDrag.y==someNMTREEVIEW.ptDrag.y);
}
inline
NotifyMessageHeader TreeViewMessageHeader::nmHeader(void)const
{
return NM_TREEVIEW::hdr;
}
inline
void TreeViewMessageHeader::nmHeader(NotifyMessageHeader &tvMessageHeader)
{
NM_TREEVIEW::hdr=(NMHDR&)tvMessageHeader;
}
inline
UINT TreeViewMessageHeader::action(void)const
{
return NM_TREEVIEW::action;
}
inline
void TreeViewMessageHeader::action(UINT tvAction)
{
NM_TREEVIEW::action=tvAction;
}
inline
TreeViewItem TreeViewMessageHeader::itemOld(void)const
{
return NM_TREEVIEW::itemOld;
}
inline
void TreeViewMessageHeader::itemOld(const TreeViewItem &tvItemOld)
{
NM_TREEVIEW::itemOld=(TV_ITEM&)tvItemOld;
}
inline
TreeViewItem TreeViewMessageHeader::itemNew(void)const
{
return NM_TREEVIEW::itemNew;
}
inline
void TreeViewMessageHeader::itemNew(const TreeViewItem &tvItemNew)
{
NM_TREEVIEW::itemOld=(TV_ITEM&)tvItemNew;
}
inline
GDIPoint TreeViewMessageHeader::pointDrag(void)const
{
GDIPoint dragPoint;
dragPoint.x(NM_TREEVIEW::ptDrag.x);
dragPoint.y(NM_TREEVIEW::ptDrag.y);
return dragPoint;
}
inline
void TreeViewMessageHeader::pointDrag(const GDIPoint &tvDrawPoint)
{
NM_TREEVIEW::ptDrag=(POINT&)tvDrawPoint;
}
inline
void TreeViewMessageHeader::init(void)
{
::memset(&((NM_TREEVIEW&)*this),0,sizeof(NM_TREEVIEW));
}
#endif

139
imagelst/TVNOTIFY.HPP Normal file
View File

@@ -0,0 +1,139 @@
#ifndef _IMAGELIST_TREEVIEWNOTIFY_HPP_
#define _IMAGELIST_TREEVIEWNOTIFY_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_GDIPOINT_HPP_
#include <common/gdipoint.hpp>
#endif
#ifndef _IMAGELIST_NOTIFYMESSAGEHEADER_HPP_
#include <imagelst/notify.hpp>
#endif
class TreeViewNotify : private NM_TREEVIEW
{
public:
TreeViewNotify(void);
TreeViewNotify(const TreeViewNotify &someTreeViewNotify);
~TreeViewNotify();
NotifyMessageHeader &hdr(void);
UINT action(void)const;
TreeViewItem &itemOld(void);
TreeViewItem &itemNew(void);
GDIPoint &dragPoint(void);
private:
TreeViewNotify &operator=(const TreeViewNotify &someTreeViewNotify);
WORD operator==(const TreeViewNotify &someTreeViewNotify)const;
void hdr(const NotifyMessageHeader &someNotifyMessageHeader);
void itemOld(const TreeViewItem &someTreeViewItem);
void itemNew(const TreeViewItem &someTreeViewItem);
void dragPoint(const GDIPoint &someGDIPoint);
void action(UINT action);
void clearData(void);
};
inline
TreeViewNotify::TreeViewNotify(void)
{
clearData();
}
inline
TreeViewNotify::TreeViewNotify(const TreeViewNotify &someTreeViewNotify)
{
clearData();
*this=someTreeViewNotify;
}
inline
TreeViewNotify::~TreeViewNotify()
{
}
inline
TreeViewNotify &TreeViewNotify::operator=(const TreeViewNotify &someTreeViewNotify)
{
hdr(((TreeViewNotify&)someTreeViewNotify).hdr());
itemOld(((TreeViewNotify&)someTreeViewNotify).itemOld());
itemNew(((TreeViewNotify&)someTreeViewNotify).itemNew());
dragPoint(((TreeViewNotify&)someTreeViewNotify).dragPoint());
action(((TreeViewNotify&)someTreeViewNotify).action());
return *this;
}
inline
WORD TreeViewNotify::operator==(const TreeViewNotify &someTreeViewNotify)const
{
return (((TreeViewNotify&)*this).hdr()==((TreeViewNotify&)someTreeViewNotify).hdr()&&
((TreeViewNotify&)*this).itemOld()==((TreeViewNotify&)someTreeViewNotify).itemOld()&&
((TreeViewNotify&)*this).itemNew()==((TreeViewNotify&)someTreeViewNotify).itemNew()&&
((TreeViewNotify&)*this).dragPoint()==((TreeViewNotify&)someTreeViewNotify).dragPoint()&&
((TreeViewNotify&)*this).action()==((TreeViewNotify&)someTreeViewNotify).action());
}
inline
NotifyMessageHeader &TreeViewNotify::hdr(void)
{
return (NotifyMessageHeader&)NM_TREEVIEW::hdr;
}
inline
void TreeViewNotify::hdr(const NotifyMessageHeader &someNotifyMessageHeader)
{
((NotifyMessageHeader&)NM_TREEVIEW::hdr)=someNotifyMessageHeader;
}
inline
UINT TreeViewNotify::action(void)const
{
return NM_TREEVIEW::action;
}
inline
void TreeViewNotify::action(UINT action)
{
NM_TREEVIEW::action=action;
}
inline
TreeViewItem &TreeViewNotify::itemOld(void)
{
return (TreeViewItem&)NM_TREEVIEW::itemOld;
}
inline
void TreeViewNotify::itemOld(const TreeViewItem &someTreeViewItem)
{
(TreeViewItem&)NM_TREEVIEW::itemOld=someTreeViewItem;
}
inline
TreeViewItem &TreeViewNotify::itemNew(void)
{
return (TreeViewItem&)NM_TREEVIEW::itemNew;
}
inline
void TreeViewNotify::itemNew(const TreeViewItem &someTreeViewItem)
{
(TreeViewItem&)NM_TREEVIEW::itemNew=someTreeViewItem;
}
inline
GDIPoint &TreeViewNotify::dragPoint(void)
{
return (GDIPoint&)NM_TREEVIEW::ptDrag;
}
inline
void TreeViewNotify::dragPoint(const GDIPoint &someGDIPoint)
{
(GDIPoint&)NM_TREEVIEW::ptDrag=someGDIPoint;
}
inline
void TreeViewNotify::clearData(void)
{
::memset((char*)&((NM_TREEVIEW&)*this),0,sizeof(NM_TREEVIEW));
}
#endif

BIN
imagelst/VC40.IDB Normal file

Binary file not shown.

142
imagelst/imagelst.001 Normal file
View File

@@ -0,0 +1,142 @@
# Microsoft Developer Studio Project File - Name="imagelst" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 5.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=imagelst - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "imagelst.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "imagelst.mak" CFG="imagelst - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "imagelst - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "imagelst - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
!IF "$(CFG)" == "imagelst - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ".\Release"
# PROP BASE Intermediate_Dir ".\Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "msvcobj"
# PROP Intermediate_Dir "msvcobj"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /GX /Zi /Od /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "STRICT" /D "__FLAT__" /YX /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\exe\imagelst.lib"
!ELSEIF "$(CFG)" == "imagelst - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ".\Debug"
# PROP BASE Intermediate_Dir ".\Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ".\msvcobj"
# PROP Intermediate_Dir ".\msvcobj"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /GX /Zi /Od /Ob2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /YX /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\exe\imagelst.lib"
!ENDIF
# Begin Target
# Name "imagelst - Win32 Release"
# Name "imagelst - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=.\Ftree.cpp
# End Source File
# Begin Source File
SOURCE=.\Imagelst.cpp
# End Source File
# Begin Source File
SOURCE=.\Stdtmpl.cpp
# End Source File
# Begin Source File
SOURCE=.\Treeview.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
# Begin Source File
SOURCE=.\Ftree.hpp
# End Source File
# Begin Source File
SOURCE=.\Hittest.hpp
# End Source File
# Begin Source File
SOURCE=.\Imagelst.hpp
# End Source File
# Begin Source File
SOURCE=.\Imgeinfo.hpp
# End Source File
# Begin Source File
SOURCE=.\Treeview.hpp
# End Source File
# Begin Source File
SOURCE=.\Tvdisp.hpp
# End Source File
# Begin Source File
SOURCE=.\Tvitem.hpp
# End Source File
# Begin Source File
SOURCE=.\Tvkey.hpp
# End Source File
# Begin Source File
SOURCE=.\Tvmsghdr.hpp
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

148
imagelst/imagelst.dsp Normal file
View File

@@ -0,0 +1,148 @@
# Microsoft Developer Studio Project File - Name="imagelst" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=imagelst - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "imagelst.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "imagelst.mak" CFG="imagelst - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "imagelst - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "imagelst - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "imagelst - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ".\Release"
# PROP BASE Intermediate_Dir ".\Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "msvcobj"
# PROP Intermediate_Dir "msvcobj"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /GX /ZI /Od /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "STRICT" /D "__FLAT__" /YX /FD /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\exe\imagelst.lib"
!ELSEIF "$(CFG)" == "imagelst - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ".\Debug"
# PROP BASE Intermediate_Dir ".\Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ".\msvcobj"
# PROP Intermediate_Dir ".\msvcobj"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp8 /MTd /GX /ZI /Od /I "\work" /I "\parts" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /YX /FD /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\exe\imagelst.lib"
!ENDIF
# Begin Target
# Name "imagelst - Win32 Release"
# Name "imagelst - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=.\Ftree.cpp
# End Source File
# Begin Source File
SOURCE=.\Imagelst.cpp
# End Source File
# Begin Source File
SOURCE=.\Stdtmpl.cpp
# End Source File
# Begin Source File
SOURCE=.\Treeview.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
# Begin Source File
SOURCE=.\Ftree.hpp
# End Source File
# Begin Source File
SOURCE=.\Hittest.hpp
# End Source File
# Begin Source File
SOURCE=.\Imagelst.hpp
# End Source File
# Begin Source File
SOURCE=.\Imgeinfo.hpp
# End Source File
# Begin Source File
SOURCE=.\Treeview.hpp
# End Source File
# Begin Source File
SOURCE=.\Tvdisp.hpp
# End Source File
# Begin Source File
SOURCE=.\Tvitem.hpp
# End Source File
# Begin Source File
SOURCE=.\Tvkey.hpp
# End Source File
# Begin Source File
SOURCE=.\Tvmsghdr.hpp
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

BIN
imagelst/imagelst.mdp Normal file

Binary file not shown.

BIN
imagelst/imagelst.opt Normal file

Binary file not shown.