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