#if !defined(AFX_TREEDLG_H)
#define AFX_TREEDLG_H
////////////////////////////////////////////////////////////////////////////////
//
//   ActiveX Control-
//  -  
// <VCTree.h>
// CVCTreeCtrl    -   
//
////////////////////////////////////////////////////////////////////////////////
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#pragma warning(disable:4786) // warning C4786: 'identifier was truncated to '255' characters in the browser information  
#include "ActiveXWnd.h"
#include "PArray.h"
#pragma warning(default:4786) //warning C4786: identifier was truncated to '255' characters in the browser information

class CVCTreeCtrl;


//       ActiveX .
typedef CActiveXWnd<TreeView,  ITreeView,  ITreeViewPtr>  CTreeOleCtrlBase;
typedef CActiveXWnd<ImageList, IImageList, IImageListPtr> CImageListOleCtrl;
typedef CActiveXWnd<Toolbar,   IToolbar,   IToolbarPtr>   CToolbarOleCtrl;

///////////////////////////////////////////////////////////////////////////////
//
///         
/*
          node  
*/
//
///////////////////////////////////////////////////////////////////////////////
class CTreeOleCtrl : public CTreeOleCtrlBase
{
protected:
  HMENU                       m_hPopupMenu;
  CWnd  *                     m_MenuParent;
public:
  CTreeOleCtrl() : m_hPopupMenu(0), m_MenuParent(NULL)  {};
  //  
  void SetContextMenu( HMENU m ) { m_hPopupMenu = m; } 
  void SetFireWnd( CWnd * parent ) { m_MenuParent = parent; } 
protected:
//  K11 	//  Node  
//  K11   void SelectNode( UINT nFlags, CPoint point );
  void ShowContextMenu( int x, int y );
  afx_msg void MouseDown ( short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y );
  afx_msg void MouseUp   ( short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y );
 	DECLARE_EVENTSINK_MAP()
  DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////
//
// TreeDlg dialog
//
/////////////////////////////////////////////////////////////////////////////
class TreeDlg : public CDialog
{
  CToolbarOleCtrl             m_ToolBar;
  CTreeOleCtrl                m_TreeView;
  PArray< CImageListOleCtrl > m_ImageLists;
// Construction
public:
	TreeDlg(CVCTreeCtrl &ctrl, CWnd* pParent = NULL);   // standard constructor

// Dialog Data
	//{{AFX_DATA(TreeDlg)
	enum { IDD = IDD_TREEDLG };
	//}}AFX_DATA
  CVCTreeCtrl & m_ctrl;
// Overrides
	// ClassWizard generated virtual function overrides
  UINT OnGetDlgCode();
  LPDISPATCH GetTree();
  LPDISPATCH CreateImageList();
  LPDISPATCH GetToolBar();
  void SetContextMenu(long val);
  void OnContextMenuCommand ( UINT id );

	//{{AFX_VIRTUAL(TreeDlg)
	public:
	virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL
// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(TreeDlg)
	virtual BOOL OnInitDialog();
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
public:
  afx_msg void OnSize(UINT nType, int cx, int cy);

	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_TREEDLG_H)
