home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
msdn_vcb
/
samples
/
vc98
/
sdk
/
graphics
/
directx
/
bellhop
/
cgrptree.h
< prev
next >
Wrap
C/C++ Source or Header
|
1997-07-14
|
4KB
|
121 lines
#ifndef __CGRPTREE__
#define __CGRPTREE__
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <dplay.h>
#include <dplobby.h>
#include "resource.h"
//#DEFINES
#define ST_NO_SUBGROUPS 0
#define ST_SEARCH_SUBGROUPS 1
class CGroupTree;
typedef enum { BT_INVALID = 0,
BT_GROUP,
BT_SHORTCUT_IN_GROUP,
BT_PLAYER_IN_GROUP,
BT_PLAYER,
} BRANCH_TYPE;
typedef struct tagBRANCHSTRUCT
{
DPID dpid;
BRANCH_TYPE btType;
DWORD dwFlags;
} BRANCHSTRUCT, *LPBRANCHSTRUCT;
typedef struct tagENUMTREESTRUCT
{
DPID dpidParent;
CGroupTree * lpTree;
BOOL bRecursive;
} ENUMTREESTRUCT, *LPENUMTREESTRUCT;
class CGroupTree{
private:
HINSTANCE m_hInst;
HWND m_hwndTreeView;
HWND m_hwndParent;
HWND m_hwndEditCtrl;
HIMAGELIST m_hImageList;
int m_nStagingAreaImg;
int m_nGroupImg;
int m_nInGroupImg;
int m_nPlayerImg;
int m_nShortcutInGroupImg;
int m_nSpectatorImg;
int m_nSessionInProgressImg;
BOOL m_fDragging;
BRANCHSTRUCT m_bsParentOfDragging;
BRANCHSTRUCT m_bsDragging;
BRANCHSTRUCT m_bsDropTarget;
HMENU m_hMenu,
m_hRootMenu,
m_hGroupMenu,
m_hPlayerMenu,
m_hShortcutMenu,
m_hPlayerInGroupMenu;
DPID m_dpidMenuTarget;
DPID m_dpidPlayer;
DPID m_dpidLastGroup;
private:
HTREEITEM FindItem( HTREEITEM htiSearchRoot,
DPID dpidTarget,
BRANCH_TYPE bt,
DWORD dwSearch );
HTREEITEM Insert( HTREEITEM htiParent,
DPID dpID,
LPSTR lpShortNameA,
BRANCH_TYPE bt, DWORD dwFlags );
HRESULT RecursiveRename( HTREEITEM htiSearchRoot,
DPID dpidTarget,
LPSTR lpszName );
DPID GetBranchStructOfParent( HTREEITEM htChildItem, LPBRANCHSTRUCT lpbt);
public:
LPDIRECTPLAY3A m_lpDP3A;
public:
CGroupTree();
~CGroupTree();
BOOL Init( HWND hWnd, LPDIRECTPLAY3A lpDP3A, DPID dpidPlayer );
HRESULT CreateGroup( DPID dpidGroup, LPSTR lpszShortNameA, DWORD dwFlags );
HRESULT CreatePlayer( DPID dpidPlayer, LPSTR lpszShortNameA, DWORD dwFlags );
HRESULT DestroyGroup( DPID dpidGroup );
HRESULT DestroyPlayer( DPID dpidPlayer );
HRESULT CreateGroupInGroup( DPID dpidParentGroup, DPID dpidChildGroup, LPSTR lpszShortNameA, DWORD dwFlags );
HRESULT AddPlayerToGroup(DPID dpidGroup, DPID dpidPlayer, DWORD dwFlags);
HRESULT AddGroupToGroup( DPID dpidParentGroup, DPID dpidShortcut, DWORD dwFlags );
HRESULT DeletePlayerFromGroup(DPID dpidGroup, DPID dpidPlayer );
HRESULT DeleteGroupFromGroup( DPID dpidParentGroup, DPID dpidShortcut );
HRESULT GetPlayerName( DPID dpidPlayerName, LPDPNAME * lplpName );
HRESULT GetGroupName( DPID dpidGroupName, LPDPNAME * lplpName );
DPID GetDPIDOfCurrentSelection(LPBRANCHSTRUCT lpbt = NULL);
DPID GetDPIDOfCurrentSelectionParent( LPBRANCHSTRUCT lpbt = NULL);
HRESULT SetPlayerName( DPID dpidPlayer, LPSTR lpszShortName );
HRESULT SetGroupName( DPID dpidPlayer, LPSTR lpszShortName );
HRESULT Refresh( BOOL bRecursive = TRUE );
BOOL Update(LPVOID lpvMsg);
void OnBeginDrag(NM_TREEVIEW *lpnmtv);
void OnMouseMove( LONG xCur, LONG yCur);
void OnLButtonUp(void);
void OnRButtonDown( LONG xCur, LONG yCur);
void OnDblClk( LONG xCur, LONG yCur);
void Redraw();
HRESULT BeginLabelEdit();
void EndLabelEdit(TV_DISPINFO FAR * lpTVDisp );
BOOL OnWM_NOTIFY( WPARAM wParam, LPARAM lParam );
HRESULT EditLabel();
HRESULT CheckAccessRights(TV_DISPINFO FAR * lpTVDisp = NULL);
};
#endif