#ifndef ExtraStructs_h
#define ExtraStructs_h

#define MAXSTRSIZE (1024)
#define MAXCOMPSIZE (1024)
#define MAXCANDSTRNUM (40)
#define MAXCANDSTRSIZE (32)

typedef struct _tagTRANSMSG {
	UINT uMsg;
	WPARAM wParam;
	LPARAM lParam;
} TRANSMSG, *LPTRANSMSG;

// IMPORTANT
typedef struct _tagMYPRIVATE {
	// This private is used for exchanging data between
	// IME conversion interface and the UI interface.
	// Please understand how to use:
	// In ImeInquire: 
	// set lpIMEInfo->dwPrivateDataSize = sizeof(MYPRIVATE);
	// Then every IMC generated will share this private, access
	// through IMC->hPrivate field
	wchar_t PreEditStr[MAXSTRSIZE];
	wchar_t CandStr[MAXSTRSIZE];
} MYPRIVATE, *LPMYPRIVATE;

typedef struct _tagMYCOMPSTR{
    COMPOSITIONSTRING cs;
    wchar_t szCompStr[MAXCOMPSIZE];
    wchar_t szResultStr[MAXCOMPSIZE];	
} MYCOMPSTR, *LPMYCOMPSTR;

typedef struct _tagMYCAND{
    CANDIDATEINFO  ci;
    CANDIDATELIST  cl;
    DWORD          offset[MAXCANDSTRNUM];
    wchar_t          szCandStr[MAXCANDSTRNUM][MAXCANDSTRSIZE];
} MYCAND, *LPMYCAND;

#endif // ExtraStructs_h
