www.pudn.com > 1.rar > I2BaseWBSet.h


// I2BaseWBSet.h: interface for the CI2WBBaseWBSet class. 
#ifndef _IASP2WHITEBOARDBASEWHITEBOARDSETINCLUDEFILE_H_ 
#define _IASP2WHITEBOARDBASEWHITEBOARDSETINCLUDEFILE_H_ 
 
#include "I2BaseWB.h" 
#include "I2ControlSet.h" 
#include "iaspwb.h" 
 
#define WB32HOLDERCLASSNAME "iaspwb32holder" 
#define IASPWB32CLIPBOARDFORMAT "iaspwb32clipboardformat" 
 
#define WB_DEFAULT_WIDTH       800 
#define WB_DEFAULT_HEIGHT      600 
 
//macros 
//#define MAX_CTRLSETNAME      64 
#define MAX_WBNAME           64 
#define MAX_CONTROLDESC      128 
#define MAX_CTRLIDNAME       36 
#define MIN_LINEWIDTH        1 
#define MAX_LINEWIDTH        512 
 
//font struct 
#define WBFS_BOLD              0x01 
#define WBFS_ITALIC            0x02 
#define WBFS_UNDERLINE         0x04 
 
//attribute types 
#define WBAT_LINEWIDTH          0x01 
#define WBAT_LINESTYLE          0x02 
#define WBAT_COLOR              0x04 
#define WBAT_BKCOLOR            0x08 
#define WBAT_FONT               0x10 
 
//change font mask 
#define WB_FONT_NAME 1 
#define WB_FONT_SIZE 2 
#define WB_FONT_BOLD 4 
#define WB_FONT_ITAL 8 
#define WB_FONT_UNDE 16 
#define WB_FONT_ALL  32 
#define WB_FONT_COLO 64 
 
//indicate remotely 
#define WB_INDICATE_WIDTH	  	31 
#define WB_INDICATE_HEIGHT		20 
#define WB_INDICATE_XOFFSET   31 
#define WB_INDICATE_YOFFSET    7 
 
typedef void (CALLBACK *IASPWB32PROC)(int notifytype,void* notifydata); 
#define WB32_SETCURWB   0		 
#define WB32_SETSELECT  1		 
 
 
//data type 
#define WB_TYPE_INDICATE		0	//indicate operation 
#define WB_TYPE_SLIDE			  1	//writeboard operation 
#define WB_TYPE_CONTROL			2	//control  
#define WB_TYPE_LAYER			  3	//layer operation 
 
typedef struct tagWB32HEADER       
{ 
DWORD	  datatype; 
CHAR    wbname[MAX_WBNAME]; 
}WB32HEADER,*LPWB32HEADER; 
 
typedef struct tagWB32LAYER       
{ 
BOOL	flayer;						//TRUE,back to front 
									      //FALSE.front to back 
CHAR  idname[MAX_CTRLIDNAME]; 
}WB32LAYER,*LPWB32LAYER; 
 
typedef struct tagWB32INDICATE      
{ 
BOOL findi; 
POINT point; 
}WB32INDICATE,*LPWB32INDICATE; 
 
//control operation 
#define WB32DATACODE_COPY           0 
#define WB32DATACODE_DRAG		        1   	 
#define WB32DATACODE_DEL		        2 
#define WB32DATACODE_CHANGE			    3 
#define WB32DATACODE_PASTE			    4 
#define WB32DATACODE_CHANGEDATA     5   //used for editor control temporarily 
 
typedef struct tagWB32DATAHEADER 
{ 
DWORD    version;      //data format version,HIWORD is major version and LOWORD is minor version 
DWORD    datacode;     //code indicates what the data present 
DWORD	   attribchanged;//changed attribute 
DWORD    linewidth;    //Line Width 
DWORD    linestyle;    //Line Style 
COLORREF color;        //Color 
COLORREF bkcolor;      //Background Color 
WB32FONT font;         //Font 
UINT	   count;		     //number of controls 
}WB32DATAHEADER,*LPWB32DATAHEADER; 
 
#define WB_NEW		0 
#define WB_FIRST	1 
#define WB_LAST		2 
#define WB_NEXT		3 
#define WB_PREV		4 
#define WB_DEL		5 
#define WB_SET		6 
 
typedef struct tagWB32SLIDE   //white board operate 
{ 
DWORD	code; 
CHAR  wbname[MAX_WBNAME]; 
}WB32SLIDE,*LPWB32SLIDE; 
 
typedef struct tagREGEDITORENTRY 
{ 
GUID csid; 
INT cid; 
}REGEDITORENTRY; 
 
typedef struct tagREGDRAGDROPENTRY 
{ 
CHAR ext[4]; 
GUID csid; 
INT cid; 
}REGDRAGDROPENTRY; 
 
typedef struct tagWB32WBSAVE 
{ 
CHAR tag[5]; 
CHAR name[MAX_CTRLIDNAME]; 
INT num; 
INT len; 
} WB32WBSAVE; 
 
template class IASPAPI I2List; 
template class IASPAPI I2List; 
 
//-----CI2WBBaseWBSet-----// 
template class IASPAPI I2List; 
template class IASPAPI I2List; 
 
 
class IASPAPI CI2WBBaseWBSet:public I2Wnd 
{ 
#define CLASSNAME_CI2WBBASEWBSET "CI2WBBaseWBSet" 
 
public: 
	CI2WBBaseCSet * getCurControlSet(); 
	void enumControlSet(I2List& m_infolist); 
 
	VOID getControlSetID(GUID* Value); 
	VOID setControlSetID(GUID Value); 
	VOID getControlID(INT* Value); 
	VOID setControlID(INT Value); 
 
	VOID getCurWbIndex(INT* Value);     //based 1 
  INT  getWbIndex(LPSTR wbname);       //based 1 
	VOID resize(const I2Rect& rect); 
	 
	//clipboard functions 
	VOID del(); 
	VOID cut(); 
	VOID copy(); 
	VOID paste(); 
	VOID cutWb(); 
	VOID copyWb(); 
	VOID pasteWb(); 
 
	INT m_whiteboardindex; 
	I2List m_whiteboardlist; 
	IASPWB32PROC m_wbcallback; 
	I2List m_regeditorcontrol; 
	I2List m_regdragdropcontrol; 
 
	I2Stream*        m_stream; 
//	I2SDKFileStream* m_log; 
 
	virtual BOOL processMessage(UINT uMsg,WPARAM wParam,LPARAM lParam); 
	virtual void fillClassInfo(LPWNDCLASSEX pwcx); 
	VOID Initialize(HWND hParentWnd,const I2Rect& rect,I2Stream* m_icomm); 
  BOOL recv(VOID *p,INT len); 
	VOID readFromStream(); 
	VOID writeToStream(); 
	VOID setCallBack(IASPWB32PROC wbcallback); 
	VOID changeIndicate();  
	BOOL nextWb(BOOL fsend); 
	BOOL prevWb(BOOL fsend); 
	VOID delWb(INT index,BOOL fsend);//based 1 
  VOID delWb(LPSTR wbname,BOOL fsend); 
	VOID addWb(LPSTR pwbname,INT index,BOOL fsend,BOOL fsync); 
	BOOL setWb(INT index,BOOL fsend);//based 0 
	VOID lock(VOID); 
	VOID unlock(VOID); 
	VOID bringToFront(BOOL fsend); 
	VOID sendToBack(BOOL fsend); 
 
  //save & load 
  VOID saveStreamWb(I2MemoryFileStream& stm,int index); 
//  VOID loadStreamWBNew(I2MemoryFileStream& stm,int index=-1); 
//  VOID loadStreamWB(I2MemoryFileStream& stm, I2Point& pos, bool grouped=0); 
 
  VOID loadTeachPlan(VOID* p,INT len,INT index,CHAR *wbname); 
  VOID loadCourseWare(SHORT x,SHORT y,VOID* p,INT len); 
  VOID syncWb(INT index,VOID* p,INT len);//based 1 
  VOID sendData(I2MemoryFileStream& stm); 
 
	VOID get_LineWidth(INT* Value); 
	VOID set_LineWidth(INT Value); 
	VOID get_LineStyle(INT* Value); 
	VOID set_LineStyle(INT Value); 
	VOID get_Color(COLORREF* Value); 
	VOID set_Color(COLORREF Value); 
	VOID get_BKColor(COLORREF* Value); 
	VOID set_BKColor(COLORREF Value); 
	VOID get_Font(LPWB32FONT Value); 
	VOID set_Font(LPWB32FONT Value,INT mask); 
  VOID get_Name(CHAR* value,INT index); 
  VOID set_Name(CHAR* value,INT index=-1);//base 0 
  VOID get_Stream(I2Stream* icomm); 
	VOID set_Stream(I2Stream* icomm);  
  INT  get_Permit(); 
  VOID set_Permit(BOOL fpermit); 
  INT  get_Count(); 
	CI2WBBaseCSet* getControlSet(GUID m_csid); 
	VOID sendIndicate(BOOL findi,INT x,INT y); 
	VOID select(); 
	VOID erase(); 
 
	CI2WBBaseWBSet(); 
	~CI2WBBaseWBSet(); 
 
	GUID		m_CurControlSetId; 
	INT			m_CurControlId; 
 
	INT      m_prop_linewidth; 
	INT      m_prop_linestyle; 
	COLORREF m_prop_color; 
	COLORREF m_prop_bkcolor; 
	WB32FONT m_prop_font; 
	BOOL	   m_findi; 
	POINT		 m_indipos; 
	HIMAGELIST		 m_himl; 
	BOOL			m_erase; 
  BOOL      m_permit; 
 
  //inherit from I2Wnd 
  EMPTY_I2OBJECT_IMPLEMENT(CI2WBBaseWBSet,CLASSNAME_CI2WBBASEWBSET,I2Wnd) 
 
  char* toString(void) 
  { 
    return strdup("iasp2 white board set object"); 
  } 
 
protected: 
	VOID sendSlideShow(DWORD slide,LPSTR name); 
	VOID sendLayer(BOOL flayer); 
	VOID OnHScroll(INT offset); 
	VOID OnVScroll(INT offset); 
	 
	VOID OnPageScrollChange(); 
	VOID InitControlSetList(); 
	VOID RegisterEditorControl(GUID csid,INT cid); 
	VOID RegisterDragDropControl(LPSTR fileext,GUID csid,INT cid); 
 
	INT		m_controlsetpos; 
	I2List m_controlsetlist; 
}; 
 
IASPAPI void initLib(); 
 
#endif